繁体   English   中英

带有dom文档的xpath

[英]xpath with dom document

我正在尝试使用xpath查询查找xml节点。 但我不能让它工作。 在Firefox中,结果总是“未定义”,并且chrome会抛出错误代码。

<script type="text/javascript">

var xmlString = '<form><name>test</name></form>';
var doc = new DOMParser().parseFromString(xmlString,'text/xml');

var result = doc.evaluate('/form/name', doc, 
                          null, XPathResult.ANY_TYPE, null);

alert(result.stringValue);

</script>

这段代码有什么问题?

我不知道你为什么会得到这个错误,但是你可以将XPathResult.ANY_TYPE更改为XPathResult.STRING_TYPE并且可以工作(在firefox 3.6中测试)。

看到:

var xmlString = '<form><name>test</name></form>';
var doc = new DOMParser().parseFromString(xmlString,'text/xml');
var result = doc.evaluate('/form/name', doc, null, XPathResult.STRING_TYPE, null);
alert(result.stringValue); // returns 'test'

jsfiddle看到


细节:

方法evaluate的第4个参数是一个整数,您可以在其中指定所需的结果类型( 引用 )。 有许多类型 ,如整数,字符串和任何类型。 此方法返回具有许多属性的XPathResult

您必须将属性(numberValue,stringValue)与evaluate中使用的属性匹配。

我只是不明白为什么any type string value不起作用。

XPathResult.ANY_TYPE将返回xpath表达式/form/name的节点集,因此result.stringValue将无法将节点集转换为字符串。 在这种情况下,您可以使用result.iterateNext().textContent

但是,与count(/form/name)这样的表达式在与XPathResult.ANY_TYPE使用时会返回一个数字值,并且您可以使用result.numberValue来检索该情况下的数字。

有关https://developer.mozilla.org/en/DOM/document.evaluate#Result_types的更详细说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM