首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的xpath查询没有找到任何结果

我的xpath查询没有找到任何结果
EN

Stack Overflow用户
提问于 2012-12-03 23:18:20
回答 2查看 530关注 0票数 3

我有一个简单的xml节点和一个同样简单的xpath查询表达式,但它不能正常工作。我尝试了它的各种变体(// node -name,*name()='node-name',current-node-name/node-name),但仍然找不到正确的节点!

下面是我的xml:

代码语言:javascript
复制
<page-reference xmlns="http://something.com">
  <relative-path>something/something</relative-path>
  <base-path>somePath</base-path>
</page-reference>

我已经尝试了几种不同的x路径变体。如果我去掉页面引用标记的xmlns属性,它们中的大多数都可以工作。例如://relative-path, /page-reference/relative-path, relative-path, page-reference/relative-path,但它们都不能使用xmlns属性。

你知道是什么原因造成的吗?我认为这是值中http后面的双斜杠,但我不知道为什么这会导致问题,而且看起来也不是这样。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-03 23:28:56

,或者您也可以使用

代码语言:javascript
复制
//*[name()='relative-path']
票数 2
EN

Stack Overflow用户

发布于 2012-12-03 23:23:59

xmlns属性为元素提供了一个名称空间,这意味着它不仅仅是一个普通的“页面引用”或“相对路径”元素,因此不能这样访问。不同的语言有不同的方式来指示名称空间,从指示XPath查询的默认值到使用前缀。

对于JavaScript,您可以使用名称空间解析器:https://developer.mozilla.org/en-US/docs/Introduction_to_using_XPath_in_JavaScript#Implementing_a_User_Defined_Namespace_Resolver (如果您想指定前缀--在文档中使用不同的名称空间时很有用)和/或依赖于XPath表达式中的默认名称空间(尽管您需要使用一些--任何--前缀):https://developer.mozilla.org/en-US/docs/Introduction_to_using_XPath_in_JavaScript#Implementing_a_default_namespace_for_XML_documents

代码语言:javascript
复制
var xml = new DOMParser().parseFromString('<page-reference xmlns="http://something.com">'+
  '<relative-path>something/something</relative-path>'+
  '<base-path>somePath</base-path>'+
'</page-reference>', 'text/xml');

function resolver() {
    return 'http://something.com';
}
var refs = xml.evaluate('//x:page-reference', xml, resolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
alert(refs.snapshotItem(0).nodeName) // 'page-reference'

你需要一个填充程序才能支持IE。(快速搜索一下,找到了http://sourceforge.net/projects/js-xpath/files/js-xpath/ )

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

https://stackoverflow.com/questions/13686174

复制
相关文章

相似问题

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