我正在尝试为xml创建跨浏览器接口,特别是使用XPath表达式选择节点。

IE浏览器很简单:

this.documentElement.selectNodes(xPathStr);


返回一个对象,该对象提供类似数组的访问(results[i]results(i))。

但是,Firefox / chrome并不是那么容易。

this.xpathEvaluator.evaluate(xPathStr, this.documentElement, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);


返回一个XPathResult,可以使用results.snapshotItem(i)对其进行迭代或访问,就像访问数组一样。

我试着做

var items = results.snapshotItem;


但这在我尝试使用它时给了我一个错误(“对WrappedNative原型对象进行非法操作”)。

关于如何将其缓存为类似数组的变量的任何想法,还是我一直坚持手动创建数组然后返回该数组?

最佳答案

我相信您需要将结果转换为节点:

    var item = nodes.snapshotItem[i];


我正在一个类似的项目(有不同的问题),但这对我有用。但是,我猜测您可以这样做:

    var items = nodes.snapshotItem;


及以后的通话项[i]。我还没有测试过。

09-07 16:04