我最近尝试包含 wgxpath 来修补 IE 9 缺乏适当的 X-Path 支持,但在尝试使用命名空间时收到一条奇怪的错误消息(«错误:错误令牌::»)。
有人尝试将它用于从 XHR 响应中获得的 XML 文档吗?我正在尝试以下操作:
function evaluate(node, expression, namespaces) {
var resolver = null;
if(namespaces) {
resolver = function(prefix) { return namespaces[prefix]; };
}
else if(document.createNSResolver) {
resolver = document.createNSResolver(node);
}
var results = document.evaluate(expression, node, resolver, XPathResult.ANY_TYPE, null);
var value = null;
switch(results.resultType) {
case XPathResult.NUMBER_TYPE:
value = results.numberValue;
break;
case XPathResult.STRING_TYPE:
value = results.stringValue;
break;
case XPathResult.BOOLEAN_TYPE:
value = results.booleanValue;
break;
case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
case XPathResult.ORDERED_NODE_ITERATOR_TYPE:
value = [];
var result = null;
while(result = results.iterateNext()) {
value.push(result);
}
break;
case XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE:
case XPathResult.ORDERED_NODE_SNAPSHOT_TYPE:
value = [];
for(var index = 0; index < results.snapshotLength; ++index) {
value.push(results.snapshotItem(index));
}
break;
case XPathResult.ANY_UNORDERED_NODE_TYPE:
case XPathResult.FIRST_ORDERED_NODE_TYPE:
value = results.singleNodeValue;
break;
}
return value;
};
使用 IE,在从静态 SVG 文件获取的 XML 文档上评估“/svg:svg/svg:title/text()”时,它会失败。
我在这里做错了吗?
另外,我注意到它适用于 Chrome,但不适用于 Firefox。我收到以下错误消息:«WrongDocumentError:节点不能在创建它的文档之外的文档中使用»。
由于 wgxpath 安装在窗口上,我不确定如何为传入的 XHR XML 文档设置它...