-1

我有这样的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 值,即:

One Two Three Four

这个怎么做?

4

1 回答 1

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')
于 2012-03-22T11:37:01.883 回答