![]() |
![]() |
6 Einträge, 1 Seite |
1
2
3
4
5
6
7
8
9
10
11
12
13
<adresse>
<contact:type>Firma</contact:type>
<contact:name>Supidipi GmbH</contact:name>
<contact:postal>
<contact:address>zuhausestrasse 1</contact:address>
<contact:postalCode>12345</contact:postalCode>
<contact:city>Bad Meingarten</contact:city>
<contact:countryCode>DE</contact:countryCode>
</contact:postal>
<contact:phone>+49 12345</contact:phone>
<contact:fax>+49 23456</contact:fax>
<contact:email>info@example.com</contact:email>
</adresse>
XML::TreeBuilder mit den edthoden aus
HTML::Element.
XML::Simple ist das Parsen sehr einfach, parst aber immer automatisch das gesamte Dokument.
XML::Twig empfehlen.
XML::Simple kriege ich die einzelnen Werte, allerdings sieht das in meinem Programm wegen der übelst langen Zeile dann äußerst unschön aus. Und es sind nicht unbedingt alle Zeilen da, z.B. email und Fax gibt es nicht immer. Daher wolle ich eleganterweise erst einmal fesstellen was überhaupt vorhanden ist, aber content_list() gibt nur sowas wie
XML::Elements kommen.
1
2
3
4
5
6
7
8
$ xmllint -
-:2: namespace error : Namespace prefix contact on type is not defined
<contact:type>Firma</contact:type>
^
-:3: namespace error : Namespace prefix contact on name is not defined
<contact:name>Supidipi GmbH</contact:name>
^
...
XML::LibXML, aber wenn hier tatsächlich Namespaces vorkommen, dann wird es damit etwas haariger.
XML::TreeBuilder geblieben und suche die einzelnen Kontakte mit1
2
3
foreach my $contacts ($tree->find_by_tag_name('contact'){
my $name = $contacts->find_by_tag_name('contact:name')->as_text;
}$contacts->find_by_tag_name('contact:fax');![]() |
![]() |
6 Einträge, 1 Seite |