Использование Perl XML :: DOM - PullRequest
2 голосов
/ 15 ноября 2010

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

<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

Чтобы достичь параметров узла "node" в пятой строке, я хочу использовать метод getFirstChild, но не могу, потому что он ищет дочерние элементы "#text".

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

Спасибо,

Кевин

1 Ответ

4 голосов
/ 15 ноября 2010

Попробуйте:

#!/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";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...