无法在Perl中获取XML子节点

时间:2015-02-27 04:02:41

标签: xml perl

我写了下面的代码

use strict;
use warnings;

use XML::Simple;
use Data::Dumper;
use XML::LibXML;

use feature 'say';

my $request = "<request session=\"1\" timestamp=\"2\" crc=\"\"><get resource=\"CPX.Security.Session\"/></request>";
print $request, "\n";

my $dom1 = XML::LibXML->load_xml(string => $request);

my @titles = $dom1->getElementsByTagName("get");
foreach my $t (@titles) {
    print "$t\n";
}

我期望将输出作为整个<get>节点。我发送的请求XML是

<request session="1" timestamp="2" crc="">
  <get resource="CPX.Security.Session"/>
</request>

预期输出为

<get resource="CPX.Security.Session"/></request>

我得到输出为

XML::LibXML::Element=SCALAR(0x12e287c)

任何人都可以帮助我获取所需的输出。我正在使用Perl的Dwimperl发行版。

为了提醒一下,上面的代码正在使用Perl的Strawberry发布,但是我需要在Dwimperl上完成这项工作。

1 个答案:

答案 0 :(得分:3)

您的问题是因为您在DWIM Perl系统上安装了较旧版本的XML::LibXML,并未以相同方式对XML::LibXML::Element个对象进行字符串化。

您应该尝试升级XML::LibXML模块的安装,但解决方法是更改​​

print "$t\n";

print $t->toString, "\n";