LibXML打印节点的后半部分

时间:2014-10-20 21:31:17

标签: perl libxml2

得到了一个关于LibXML的问题我希望所有人都可以提供帮助。

[root@server DAI_P2_10mdc]# cat test.pl
#!bin/perl
BEGIN { chomp(my $wd = `pwd`); unshift @INC, "$wd/lib/perl5/5.20.1"; unshift @INC, "$wd/lib/perl5/5.20.1/x86_64-linux"; unshift @INC, "$wd/lib/perl5/site_perl/5.20.1/x86_64-linux"; unshift @INC, "$wd/lib/perl5/site_perl/5.20.1";}

use strict;
use warnings;
use XML::LibXML;

my $TEMPLATE = "DownConvertJobTemplate.xml";

my $parser = XML::LibXML->new();
my $ADI_ORIG = $parser->parse_file($TEMPLATE);

foreach my $node ($ADI_ORIG->findnodes('//job/output_group/file_group_settings/destination')) {
    print $node->toString();
}

[root@server DAI_P2_10mdc]#
[root@server DAI_P2_10mdc]# ./test.pl
<destination>
        <uri/>
      </destination>

实际XML文件内容:

<file_group_settings>
  <rollover_interval nil="true"/>
  <destination>
    <uri></uri>
  </destination>
</file_group_settings>

为什么我只收到<uri>的后半部分?

1 个答案:

答案 0 :(得分:2)

它没有写

</uri>
你声称,

它写了

<uri/>

后者是equivalent

<uri></uri>

你没有理由这样做,但如果你因为任何奇怪的原因不喜欢这个,你可以使用

local $XML::LibXML::setTagCompression = 0;

在您的序列化调用范围内。