1
這裏是我的XML裏面我是用XML ::的libxml解析::讀者XML ::的libxml ::閱讀器給人錯誤的匹配元素
<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(for xPath),我無法避免它。另外,爲了一些兼容性的原因,我想堅持使用XML :: LibXML :: Reader。
請幫助。
Crosspost:http://perlmonks.org/index.pl?node_id=939894 – daxim