in reply to XML parsing question
use strict; use warnings; use XML::Twig; my $xfile = <<'EOF'; <?xml version="1.0" encoding="UTF-8"?> <results> <document id="\2006\200601\20060125\20060125_18.txt" datetime="2006/01/25" sourcecategory="News Archive" schemeversion="1.1"> </document> <document id="\2006\200601\20060125\20060125_19.txt" datetime="2006/01/25" sourcecategory="News Archive" schemeversion="1.1"> <record> <sentence-number>3</sentence-number> <data-class>Target</data-class> <group>P6</group> </record> <record> <sentence-number>12</sentence-number> <data-class>Good</data-class> <group>P6</group> </record> </document> </results> EOF my $t= new XML::Twig( twig_handlers => {document => \&doc} ); $t->parse($xfile); sub doc { my ($twig, $doc) = @_; my $doc_csv = join ',', $doc->att('datetime'), $doc->att('id'), $doc->att('sourcecategory'), $doc->att('schemeversion'); print "$doc_csv\n" unless $doc->children('record'); for my $rec ($doc->children('record')) { print join ',', $doc_csv, $rec->first_child('sentence-number')->text(), $rec->first_child('data-class' )->text(), $rec->first_child('group' )->text(); print "\n"; } } __END__ 2006/01/25,\2006\200601\20060125\20060125_18.txt,News Archive,1.1 2006/01/25,\2006\200601\20060125\20060125_19.txt,News Archive,1.1,3,Ta +rget,P6 2006/01/25,\2006\200601\20060125\20060125_19.txt,News Archive,1.1,12,G +ood,P6
|
|---|