我正在尝试使用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/

10-09 02:27