[英]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.