dug*_*tov 3 javascript xml xpath namespaces
我需要创建一个XML xPath解析器.所有解析都必须在客户端进行(使用javascript).我创建了一个执行此操作的javascript,在默认命名空间发挥作用之前,所有内容都可以正常运行.我根本无法查询具有默认命名空间的XML.
我在小提琴上创建了一个示例代码.在xmlString中是从服务器接收的XML字符串.在xPathString中,对收到的XML进行查询.
以下是一些场景:
请注意,其他人将使用此解析器,所以我真的想避免像这样的解决方案
var xPathString = "//*[local-name()='book']";
Run Code Online (Sandbox Code Playgroud)
并使他们能够使用简单的xPath表达式解析它.我想知道是否可以在javascript中指定默认名称空间前缀?
注意:小提琴上提供的示例在IE中不起作用.
我认为有三种方法可以做到这一点:
//*[local-name()='book']语法访问节点这可以这样实现:
function nsResolver(prefix) {
switch (prefix) {
case 'xhtml':
return 'http://www.w3.org/1999/xhtml';
case 'mathml':
return 'http://www.w3.org/1998/Math/MathML';
default:
return 'http://example.com/domain';
}
}
xml.evaluate('//myPrefix:book', xml, nsResolver, XPathResult.ANY_TYPE, null);
Run Code Online (Sandbox Code Playgroud)