【问题标题】:Perl XML::DOM parser usagePerl XML::DOM 解析器使用
【发布时间】:2011-05-09 23:30:21
【问题描述】:

我正在尝试获取此 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 对象是什么?我应该怎么做才能到达第五个节点?

谢谢,

凯文

【问题讨论】:

  • XML::DOM 是非标准的。您应该改用XML::LibXML

标签: xml perl dom xml-parsing


【解决方案1】:

试试:

#!/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";

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2013-07-18
    • 2013-12-24
    • 2013-11-15
    • 2022-11-04
    • 2012-02-26
    相关资源
    最近更新 更多