我正在尝试为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]。我还没有测试过。