sâmbătă, 7 noiembrie 2015

ATELIER -> Interfata Perl pentru XML

Modulele xml din CPAN se divid in trei mari categorii:
    1.interfete intre xml si structura de date a Perl;
    2.module care implementeaza o interfata API pentru xml;
    3.module care simplifica lucrul cu xml.
Desi utilizarea xml cunoaste o mare varietate de formate, marea majoritate a lucrului cu aceste formate se divide in doua mari grupe - extragerea datelor din documentele xml, si crearea de documente xml utilizand date din alte formate.

Module care asigura interfata de lucru cu xml.
    XML::LibXML; - este utilizat in codul de mai jos
    XML::Feed; -

Data: Duminica 08:11:2015
Sa presupunem ca avem fila xml:

<breakfast_menu>
   <food>
       <name>Belgian Waffles</name>
       <price>$5.95</price>
       <description>Two of our famous Belgian Waffles with plenty of real maple syrup</description>
       <calories>650</calories> </food>
   <food>
       <name>Strawberry Belgian Waffles</name>
       <price>$7.95</price>
       <description>Light Belgian waffles covered with strawberries and whipped cream</description>
       <calories>900</calories> </food>
   <food>
       <name>Berry-Berry Belgian Waffles</name>
       <price>$8.95</price>
       <description>Light Belgian waffles covered with an assortment of fresh berries and whipped cream</description>
       <calories>900</calories> </food>
   <food>
       <name>French Toast</name>
       <price>$4.50</price>
       <description>Thick slices made from our homemade sourdough bread</description>
       <calories>600</calories> </food>
   <food>
       <name>Homestyle Breakfast</name>
       <price>$6.95</price>
       <description>Two eggs, bacon or sausage, toast, and our ever-popular hash browns</description>
       <calories>950</calories> </food>
</breakfast_menu>

Urmatoarea fila este scriptul Perl pentru a prelucra acest XML:


#!/usr/bin/perl
use warnings;
use strict;
# Incarcarea filei pe care dorim sa o prelucram
my $filename = 'simple.xml';
print "Numele filei XML de incarcat: $filename.\n";
# Incarcam in aceast fila modulul XML::LibXML
use XML::LibXML;
# Creem un obiect $parser
my $parser = XML::LibXML->new();
# Cerem obiectului $parser prin functia parse_file sa parcurga fila xml
my $doc = $parser->parse_file($filename);
# Parcurgem elementele si le afisam prin functia print
foreach my $book($doc->findnodes('/breakfast_menu/food')){
 my ($name) = $book->findnodes('./name');
 my ($price) = $book->findnodes('./price');
 print $name->to_literal," ", $price->to_literal, "\n";
 
}

Output dupa rularea scriptului Perl:
Resurse web:
http://www.perlmonks.org/?node_id=490846

Niciun comentariu:

Trimiteți un comentariu