您好我有問題在使用名稱空間獲取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