XML::LibXML::Reader提供了错误的匹配元素

XML::LibXML::Reader提供了错误的匹配元素,xml,perl,libxml2,Xml,Perl,Libxml2,这是我的XML,我正在使用XML::LibXML::Reader解析它 <world> <country short="usa" name="united state of america"> <state short="CA" name="california"/> <city short="SFO" name="San Franscisco"/> <city shor

这是我的XML,我正在使用XML::LibXML::Reader解析它

<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>
@匹配的节点给了我两个元素。为什么?只有一个世界标签。我的代码有什么问题

同样,当我使用这个模式时

my $pattern = XML::LibXML::Pattern->new('/world/country');
它给了我四个元素,而我只有两个国家标签

请解释我哪里做错了? 我需要使用模式(用于xPath),我无法避免它。另外,出于一些稳定性原因,我希望继续使用XML::LibXML::Reader


请帮助。

交叉张贴在。“谦虚的我”在这里回答。

Crosspost:感谢您的及时回答。
my $pattern = XML::LibXML::Pattern->new('/world/country');