首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用简单的XML和xpath解析XML文件

使用简单的XML和xpath解析XML文件
EN

Stack Overflow用户
提问于 2014-09-23 15:14:25
回答 2查看 86关注 0票数 0

我试图从这个文件http://www.uniprot.org/uniprot/P12345.xml中获取节点的值“/entry/评论型=”亚细胞位置“/subcellularLocation/location”

我使用的是SimpleXML和xpath,但是我无法使用以下方法访问这个节点:

代码语言:javascript
复制
$var = "http://www.uniprot.org/uniprot/P12345.xml";
$Unip_result= new SimpleXMLElement($var, NULL, TRUE);

$value=$Unip_result->xpath("/entry/comment[@type='subcellular location']");

结果是一个空数组..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-24 12:06:20

您的XML有默认名称空间(没有前缀的名称空间:xmlns="....")。在祖先的默认名称空间中考虑声明默认命名空间的元素及其所有不带前缀和没有不同默认命名空间的后代。因此,您需要注册一个指向默认命名空间URI的前缀,并在XPath中使用该前缀:

代码语言:javascript
复制
$var = "http://www.uniprot.org/uniprot/P12345.xml";
$Unip_result = new SimpleXMLElement($var, NULL, TRUE);
$Unip_result->registerXPathNamespace('ns', 'http://uniprot.org/uniprot');

$value = $Unip_result->xpath("/ns:uniprot/ns:entry/ns:comment[@type='subcellular location']");
票数 1
EN

Stack Overflow用户

发布于 2014-09-23 17:50:11

XML有名称空间,您需要为它注册一个前缀,并在XPath表达式中使用前缀。检查SimpleXMLElement::registerXpathNamespace()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25998706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档