Perl XML::DOM 解析器的使用

发布于 2024-10-01 23:09:27 字数 996 浏览 3 评论 0原文

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

谢谢你,

凯文

I'm trying to get the numbers of errors in the fifth line of this XML file:

<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>

Using XML::DOM::Parser and this code:

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";
}

But instead of only printing "result", I get this:

#text
result
#text

To reach the parameters of the "node" node in the fifth line, I want to use the getFirstChild method, but I can't because it looks for children of "#text".

What is this #text object? What should I do to reach the fifth node?

Thank you,

Kevin

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

当梦初醒 2024-10-08 23:09:27

尝试:

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

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";
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文