我有以下需要处理的 XML
<table>
<col1>check1</col1>
<col2>check2</col2>
<col3>check3</col3>
<content>
<data>gt1</data>
<data>check_gt1</data>
</content>
</table>
我想得到“<content><data>gt1</data><data>check_gt1</data></content>
“来自解析器。
我的解析代码如下,
my $parser = XML::LibXML->new();
my $respDom = $parser->parse_string($xmldata);
print "content is ".$respDom->getDocumentElement->findnodes("//content");
上面的代码会产生节点内的textContent。如何获取上面提到的数据?
XML::LibXML::Node 对象具有一个方法toString https://metacpan.org/pod/distribution/XML-LibXML/lib/XML/LibXML/Node.pod#toString。这就是你所需要的。我通过快速搜索 XML::LibXML 文档找到了它。
use strict;
use warnings;
use XML::LibXML;
my $xmldata = <<'XML';
<table>
<col1>check1</col1>
<col2>check2</col2>
<col3>check3</col3>
<content>
<data>gt1</data>
<data>check_gt1</data>
</content>
</table>
XML
my $parser = XML::LibXML->new();
my $respDom = $parser->parse_string($xmldata);
print "content is "
. $respDom->getDocumentElement->findnodes("//content")->[0]->toString;
这将打印:
content is <content>
<data>gt1</data>
<data>check_gt1</data>
</content>
一般来说,我总是寻找to_string
, as_string
, stringify
或者简单地string
如果我需要类似的东西并且不确定它在特定模块中如何工作。它几乎总是其中之一。
Update
仅获取内部 XML<content>
元素,你必须抓住它的子节点并做toString
对于他们每个人来说。这map
整个事情都需要调用列出上下文,否则会抛出错误。请注意我是如何更改的.
to a ,
in the print
陈述。
print "content is "
, $respDom->getDocumentElement->findnodes("//content")->[0]->childNodes->map(sub {$_->toString});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)