带命名空间的xml文件解析
确定浏览器是否支持DOM3
级 XPath,使用以下 JavaScript 代码:
var supportsXPath = document.implementation.hasFeature("XPath", "3.0");
- createNSResolver(node) :根据 node 的命名空间信息创建一个新的 XPathNSResolver 对象。在基于使用命名空间的 XML 文档求值时,需要使用 XPathNSResolver 对象。
- evaluate(expression, context, nsresolver, type, result) :在给定的上下文中,基于特定的命名空间信息来对 XPath 表达式求值,剩下的参数指定如何返回结果。这个方法接收 5 个参数:XPath 表达式、上下文节点、命名空间求解器、返回结果的类型和保存结果的 XPathResult 对象(通常是 null ,因为结果也会以函数值的形式返回) 。其中,第三个参数(命名空间求解器)只在 XML 代码中使用了 XML 命名
空间时有必要指定; 如果 XML 代码中没有使用命名空间, 则这个参数应该指定为 null 。
命名空间支持
对于利用了命名空间的 XML 文档, XPathEvaluator 必须知道命名空间信息,然后才能正确地进行求值。如果要对该文档使用 XPath,就需要定义要使用的命名空间;否则求值将会失败。- 通过 createNSResolver() 来创建 XPathNSResolver 对象
- 定义一个函数,接收一个命名空间前缀,返回关联URI
该方法不需要确定文档中的哪个节点包含命名空间定义,相对比较灵活,只要知道前缀和 URI,就可以定义一个返回该信息的函数,然后将它作为第三个参数传递给evaluate() 即可
例子:
var nsresolver = function(prefix){
switch(prefix){
case "aaa": return "http://www.aaa.com/";
// 其他前缀
}
};