我有这样的XML结构:
<A>
<B>One</B>
<C>Two</C>
<D>
<E>Three</E>
<F>Four</F>
...
</D>
...
</A>
结构很大,很复杂,我知道只是开始,即:'/ A'
和perl中的代码如下:
use XML::LibXML;
my $parser = XML::LibXML->new();
my $xml = $parser->parse_file($file);
print $xml->find('/A')->to_literal;
给我结果:
OneTwoThreeFour
如果我使用以下代码:
print join (" ", map { $_->to_literal } $xml->findnodes('/A/descendant::*'));
我明白了:
One Two ThreeFour Three Four
我需要使用withespaces值的唯一和sparate,即:
One Two Three Four
怎么做?
答案 0 :(得分:2)
XML::LibXML::Node的概要为您提供了一个提示:
@nodes = $node->findnodes( $xpath_expression );
$result = $node->find( $xpath );
因此,请使用findnodes
方法接收列表结果。此外,您要选择A
元素的子元素,将XPath表达式更改为适合:
my @children_literal_text = map { $_->to_literal } $xml->findnodes('/A/*');
# ('One', 'Two')