Wie benutze ich XML::LibXML?

Inhalt:

Beispiel für XML::LibXML mit XPath

Hier ein kurzes Beispiel von ptk:
use XML::LibXML; 
my $p = XML::LibXML->new; 
my $doc = $p->parse_string(<<EOF); 
<TextRectID n="10"/> 
EOF 
my $root = $doc->documentElement; 
print $root->findvalue('/TextRectID/@n'), "\n";

Beispiel für XML::LibXML

#!/usr/bin/perl

use strict;
use warnings;
use XML::LibXML;

my $file = 'test.xml';
my $parser = XML::LibXML->new();
my $tree = $parser->parse_fh(\*DATA);
my $root = $tree->getDocumentElement();

my @foren = $root->getElementsByTagName('forum');

foreach my $forum(@foren){
print $forum->getAttribute('value'),": ",$forum->textContent(),"\n";
}
__DATA__
<foren>
<forum value="1">
 http://board.perl-community.de
</forum>
<forum value="2">
 http://perlmonks.org
</forum>
</foren>

Ergänzungen, Kommentare

ThomasChust - 22 Nov 2009 - XPath und XML-Namensräume

Verwendet man die XPath-Funktionalität von LibXML? bei einem Dokument, das XML-Namensräume nutzt, so muss man auch in den XPath-Ausdrücken Namensraumpräfixes setzen, da sonst einfach keine passenden Knoten gefunden werden. Das Registrieren und Nutzen der Namensräume geht zum Beispiel so:

# XML-Parser erzeugen
my $libxml = XML::LibXML->new();

# XPath-Kontext erzeugen
my $xpath = XML::LibXML::XPathContext->new();
$xpath->registerNs(html => 'http://www.w3.org/1999/xhtml');

# XML-Dokument parsen
my $document = $libxml->parse_string([...]);

# Daten aus dem Dokument extrahieren
my @paragraphs = $xpath->findnodes('//html:p[@html:class="important"]', $document);

In Verbindung mit LWP::Simple kann man so leicht Informationen aus dem Netz gewinnen smile

Kommentare werden am besten in folgender Form vorgenommen, damit sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):
---+++ Main.??? - 14 Jul 2003 - Betreff

UtilFaqSubForm edit

Titel Wie benutze ich XML::LibXML?
Autor TinaMueller
Bereich FaqPerlUndXML
Tags
Topic revision: r4 - 2009-11-22 - 20:02:32 - ThomasChust
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.