这是我使用XML :: LibXML :: Reader
解析的XML<world>
<country short="usa" name="united state of america">
<state short="CA" name="california"/>
<city short="SFO" name="San Franscisco"/>
<city short="EM" name="Emeryville"/>
<state short="FL" name="florida"/>
<city .../>
.
<city ../>
</country>
<country short="abc" name="a for apple">
<state ..../>
</country>
</world>
这是代码
use XML::LibXML::Reader;
my $reader = XML::LibXML::Reader->new(location => "map.xml");
my $pattern = XML::LibXML::Pattern->new('/world');
my @matchedNodes;
while ($reader->nextPatternMatch($pattern))
{
push @matchedNodes, $reader->copyCurrentNode(1);
}
@matchedNodes给了我两个元素。为什么?只有一个世界标签。我的代码出了什么问题?
同样当我使用模式
my $pattern = XML::LibXML::Pattern->new('/world/country');
它给了我四个元素,而我只有两个国家标签。
请解释一下我在哪里做错了? 我需要使用Pattern(用于xPath),我无法避免它。另外,出于一些可出租的原因,我想坚持使用XML :: LibXML :: Reader。
请帮忙。