有没有办法如何从xml代码中保留节点标签?问题的解释可能是这样的:我有一个xml输入,我查询输入,我想得到查询项的xml输出。
<pets>
<dog>
<name>Maggie</name>
<dob>12 October 2005</dob>
<price>75</price>
<owner>Rosie</owner>
</dog>
</pets>
当我在Perl程序中访问//pets/dog
时,输出如下:
<?xml version='1.0' standalone='yes'?>
<dog>
Maggie
12 October 2005
75
Rosie
</dog>
有没有办法给函数textContent
一些参数
保留标签?这是放置节点的循环代码块
哈希,然后输出:
$parser = XML::LibXML->new();
$data = $parser->load_xml(string => $takeninput);
$xml = new XML::LibXML::XPathContext($data);
$i = 0;
for $node ($xml->findnodes('//pets/dog'))
{
$name = $node->nodeName;
$hash{$name}[$i] = $node->textContent;
$i++;
}
保留儿童的标签?输出如下:
<?xml version='1.0' standalone='yes'?>
<dog>
<name>Maggie</name>
<dob>12 October 2005</dob>
<price>75</price>
<owner>Rosie</owner>
</dog>
感谢您的回答。
答案 0 :(得分:2)
库完全按照您的要求执行 - 它返回节点的文本内容。标记不是文本内容,因此它不会给你。
我认为你想要的是$node->toString
,它将dog
节点作为格式化的XML返回。
要获得漂亮的布局,请使用$node->toString(1)
答案 1 :(得分:0)
使用XML::XSH2:
#!/usr/bin/perl
use warnings;
use strict;
use XML::XSH2;
xsh << '__XSH__';
open 1.xml ;
ls //pets/dog |> $x ;
__XSH__
print $XML::XSH2::Map::x;
输出:
<dog>
<name>Maggie</name>
<dob>12 October 2005</dob>
<price>75</price>
<owner>Rosie</owner>
</dog>