2010-11-14 5 views
2

Я пытаюсь получить число ошибок в пятой строке этого XML-файл:Perl XML :: DOM парсер использование

<summary> 
    <result usecase="CRUD" target="AppHost"> 
    <testcase size="1" cvus="1"> 
     <sequence tps="0.25" totaltx="1" name="CRUD" min="3515" max="3515" errors="0" average="3515.0"> 
     <node tps="0.25" totaltx="1" name="localhost" min="3515" max="3515" errors="0" average="3515.0"> 
      […] 
     </node> 
     </sequence> 
    </testcase> 
    </result> 
</summary> 

Использование XML :: DOM :: Parser и этот код:

my $parser = new XML::DOM::Parser; 
my $doc = $parser->parsefile($file); 
my $root = $doc->getDocumentElement(); 

foreach my $child ($root->getChildNodes) { 
    print $child->getNodeName(); 
    print "\n"; 
} 

Но вместо того, чтобы «результат» только печати, я получаю это:

#text 
result 
#text 

для достижения параметров узла «узла» в пятой строке, я хочу использовать метод getFirstChild, но я не могу, потому что он ищет детей из «#text».

Что это за объект #text? Что мне делать, чтобы достичь пятого узла?

Спасибо,

Кевин

+2

XML :: DOM является нестандартным. Вместо этого вы должны использовать ['XML :: LibXML'] (http://search.cpan.org/perldoc?XML::LibXML). – Axeman

ответ

4

Try:

#!/usr/bin/perl 

use XML::DOM; 
use XML::Parser; 

$file = "test.xml"; 

my $parser = new XML::DOM::Parser; 
my $doc = $parser->parsefile($file); 

print $doc->getElementsByTagName('node')->item(0)->getAttributeNode('errors')->getFirstChild->getNodeValue; 
print "\n"; 
Смежные вопросы