2016-07-19 12 views
0

Wie funktioniert das XML-Parsen in einer Variablen mit Perl?Wie kann XML von einer Variablen analysiert werden?

Ich bekomme von meiner URL-kodierten Datenbank, fahre mit URL-Dekodierung fort und bekomme ein XML-Dokument.

Ich muss dieses XML analysieren.

Ich hoffe, ich war klar

<?xml version="1.0" encoding="UTF-8"?> 
<tag> 
    <field type="tag"> 
     <content> 
     <it>Ristoranti e Pizzerie</it> 
     <de>Restaurants und Pizzeria</de> 
     <en>Restaurants and pizzerias</en> 
     </content> 
     <valore>TAG14</valore> 
    </field> 
    <field type="tag"> 
     <content> 
     <it>Bar, Pub ed Enoteche</it> 
     <de>Bar, Pub und Enotheken</de> 
     <en>Bars, pubs and wine store</en> 
     </content> 
     <valore>TAG15</valore> 
    </field> 
</tag> 
+0

was Sie versucht haben? Bitte zeigen Sie uns, was Sie versucht haben, nur wir können Ihnen helfen. – Arijit

+1

Was ist das Problem? Im Allgemeinen * müssen * Sie die XML-Daten in eine Variable einlesen, bevor Sie sie analysieren, obwohl einige Module Ihnen erlauben, einen Dateinamen oder ein Dateihandle anzugeben und das Lesen von Ihnen zu verbergen. Welches Modul verwendest du? – Borodin

+0

'mein $ Zweig = XML :: Zweig -> neu -> parse ($ xml)'. Natürlich, ohne zu wissen, was du eigentlich tun willst, ist das das Beste, was ich dir geben kann. – Sobrique

Antwort

0

Es ist schwer zu wissen, was das Problem

Die beiden beliebtesten hochwertigen XML-Module sind XML::Twig und XML::LibXML ist. Das folgende Programm verwendet beide von ihnen die gleichen XML-Daten aus Ihrer Frage

Hinweis zu analysieren, die Sie nur ein Modul oder das andere verwenden wird; nicht beide wie hier

use strict; 
use warnings 'all'; 

use XML::Twig; 
## OR 
use XML::LibXML; 

my $tag = <<END_XML; 
<?xml version="1.0" encoding="UTF-8"?> 
<tag> 
    <field type="tag"> 
     <content> 
     <it>Ristoranti e Pizzerie</it> 
     <de>Restaurants und Pizzeria</de> 
     <en>Restaurants and pizzerias</en> 
     </content> 
     <valore>TAG14</valore> 
    </field> 
    <field type="tag"> 
     <content> 
     <it>Bar, Pub ed Enoteche</it> 
     <de>Bar, Pub und Enotheken</de> 
     <en>Bars, pubs and wine store</en> 
     </content> 
     <valore>TAG15</valore> 
    </field> 
</tag> 
END_XML 

my $twig = XML::Twig->new; 
$twig->parse($tag); 

## OR 

my $doc = XML::LibXML->load_xml(string => $tag); 
+0

Borodin ich bekomme diesen Fehler Kein Element gefunden in Zeile 1, Spalte 0, Byte -1 unter /usr/lib/perl5/XML/Parser.pm Zeile 187 um elenco_negozi.pl Zeile 195 –

+0

Überprüfen Sie die erste Zeile - stellen Sie sicher, dass es keine führenden Leerzeichen gibt. – Sobrique

+0

@Sobrique kein Leerzeichen. –