2011-11-24 51 views
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。

請幫助。

+0

Crosspost:http://perlmonks.org/index.pl?node_id=939894 – daxim

回答

2

交叉郵寄於PerlMonks。在那裏謙卑地回答我。

+0

感謝您的及時答覆。 – rpg