您好我有问题在使用名称空间获取XML文件中的属性的值。XPath使用名称空间来选择属性的值
<module name="ietf-inet-types"
xmlns="urn:ietf:params:xml:ns:yang:yin:1"
xmlns:inet="urn:ietf:params:xml:ns:yang:ietf-inet-types">
<namespace uri="urn:ietf:params:xml:ns:yang:ietf-inet-types"/>
<prefix value="inet"/>
</module>
我想获得“inet”作为我的xpath的结果。我用这个链接Xpath to select value of sibling attribute with namespace作为参考,并想出了:
$xml->xpath('/n:module/n:prefix/@n:value');
其中n是命名空间前缀。然而,我得到一个空数组作为结果,我在这里做错了什么?
更新: 继承人一些我用来检索值的php代码。
//gets the namespace from the model
$xpathNamespace = getXpathNamespace($domxml);
$xml = simplexml_load_string($domxml->saveXML());
$xml->registerXPathNamespace("n", $xpathNamespace);
print_r($xml->xpath('/n:module/n:prefix/@n:value'));
嗨我试过,但得到的结果与我使用xpath'/ n:module/n:prefix /'时的结果相同。其结果是:'Array([0] => SimpleXMLElement Object([@attributes] => Array([value] => inet)))' – olliejjc16
@ olliejjc16在这种情况下,您是否可以用代码更新问题使用(特别是你如何将'n'与XPath处理器中的名称空间关联起来:但是使它成为一个完整的但最小的重新创建)。 – Richard
@ olliejjc16这可能会提供一些指导:[我可以使用SimpleXML和Xpath直接选择元素属性吗?](http://stackoverflow.com/questions/4045600/can-i-use-simplexml-xpath-to-directly -select-an-elements-attribute) – har07