use XML::LibXML;
use XML::LibXML::Iterator;
my $string = q|
Computer Parts
....
|;
my $doc = XML::LibXML->new->parse_string( $string );
my $iterator = XML::LibXML::Iterator->new( $doc );
my ($path,$value) = ('','');
while ( $iterator->nextNode ) {
if ($path and $value) {
print "$path $value\n";
($path,$value) = ('','');
}
my $current = $iterator->current;
my $type = $current->nodeType;
if ( $type == XML_ELEMENT_NODE ) {
$path = $current->nodePath;
}
elsif ( $type == XML_TEXT_NODE ) {
my $text = $current->nodeValue;
chomp $text;
$value = $text if $text;
}
}
####
/PARTS/TITLE Computer Parts
/PARTS/PART[1]/ITEM Motherboard
/PARTS/PART[1]/MANUFACTURER ASUS
/PARTS/PART[1]/MODEL P3B-F
/PARTS/PART[1]/COST 123.00
/PARTS/PART[2]/ITEM Video Card
/PARTS/PART[2]/MANUFACTURER ATI
/PARTS/PART[2]/MODEL All-in-Wonder Pro
/PARTS/PART[2]/COST 160.00
/PARTS/PART[3]/ITEM Sound Card
/PARTS/PART[3]/MANUFACTURER Creative Labs
/PARTS/PART[3]/MODEL Sound Blaster Live
/PARTS/PART[3]/COST 80.00
/PARTS/PART[4]/ITEM inch Monitor
/PARTS/PART[4]/MANUFACTURER LG Electronics
/PARTS/PART[4]/MODEL 995E
/PARTS/PART[4]/COST 290.00