我正在尝试使用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个参数是一个整数,您可以在其中指定所需的结果类型(reference)。有许多types,可以是整数,字符串和任何类型。此方法返回XPathResult,它具有许多属性。您必须将属性(numberValue,stringValue)与评估中使用的属性进行匹配。
我只是不明白为什么
any type
不能与string value
一起使用。关于javascript - 带有dom文档的xpath,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3596578/