gpt4 book ai didi

perl - XPath 表达式使用 XML::LibXML::XPathContext -> findnodes() 返回空节点列表

转载 作者:行者123 更新时间:2023-12-01 17:56:17 25 4
gpt4 key购买 nike

xml:

<zoo xmlns="http://www.zoo.com" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="http://www.zoo.com animali.xsd">

<area id="1" posizione="nord" nome="scimmie">
<animale>
<nome>Gigi</nome>
<sesso>Male</sesso>
<eta>3</eta>
<img>../images/Gigi.png</img>
</animale>

<animale>
<nome>Gigia</nome>
<sesso>Female</sesso>
<eta>2</eta>
<img>../images/Gigia.png</img>
</animale>
</area>

<area id="2" posizione="nord" nome="giraffe">
<animale>
<nome>Giro</nome>
<sesso>Male</sesso>
<eta>6</eta>
<img>../images/Giro.png</img>
</animale>
</area>
<area id="3" posizione="D8" nome="Cammelli"/>
</zoo>

代码:

my $parser = XML::LibXML->new;
my $doc = $parser->parse_file("../xml/animals.xml");
my $root = $doc->getDocumentElement();
my $xpc = XML::LibXML::XPathContext->new;
$xpc->registerNs('zoo', 'http://www.zoo.com');
my $xpath_exp = "//zoo:animale[nome='".$name."']"; #also tried with "Gigi" instead of $name
my $size = $xpc -> findnodes($xpath_exp, $doc)->size();

有了这些 xml 和代码,我总是有 $size = 0

但是如果我尝试不带谓词的 xpath 表达式,例如“//zoo:animale”或“//zoo:animale/nome”

如果我在此 xpath 测试器上尝试相同的表达式(带有谓词): http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm ,它有效

有什么问题吗?

最佳答案

"//zoo:animale[nome='".$name."']";

必须:

"//zoo:animale[zoo:nome='".$name."']";  

关于perl - XPath 表达式使用 XML::LibXML::XPathContext -> findnodes() 返回空节点列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10851018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com