您好我在使用命名空间获取xml文件中的属性值时遇到问题。
<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>
我想得到&#34; inet&#34;作为我的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'));
答案 0 :(得分:1)
在没有命名空间标记的XML属性中(例如。/n:module/n:prefix/@value
)不在任何命名空间中:默认命名空间不适用于属性。
尝试使用XPath:
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.items.count
}
答案 1 :(得分:1)
好的,这是解决方案,感谢理查德和har07的结合提供了帮助。要访问前缀的值,我使用了Richard建议的下面的xpath。根据har7发布的链接中的信息,我访问了数组中的第一个元素并将其转换为字符串,我得到了值&#34; inet&#34;。下面是代码:
$prefix = $xml->xpath('/n:module/n:prefix/@value');
print_r((string)$prefix[0]);
感谢你们的帮助!