js解析xml文件(针对非IE浏览器)

带命名空间的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 。 

在 Firefox、Safari、Chrome 和 Opera 中, Document 类型通常都是与 XPathEvaluator 接口一起实现的,在这些浏览器中,既可以创建XPathEvaluator 的新实例,也可以使用 Document实例中的方法(XML 或 HTML 文档均是如此)


命名空间支持

对于利用了命名空间的 XML 文档, XPathEvaluator 必须知道命名空间信息,然后才能正确地进行求值。如果要对该文档使用 XPath,就需要定义要使用的命名空间;否则求值将会失败。

  • 通过 createNSResolver() 来创建 XPathNSResolver 对象
注意事项:这个方法接受一个参数,即文档中包含命名空间定义的节点(需要明确知道该节点位置)
  • 定义一个函数,接收一个命名空间前缀,返回关联URI

该方法不需要确定文档中的哪个节点包含命名空间定义,相对比较灵活,只要知道前缀和 URI,就可以定义一个返回该信息的函数,然后将它作为第三个参数传递给evaluate() 即可


例子:

var nsresolver = function(prefix){
  switch(prefix){
    case "aaa": return "http://www.aaa.com/";
 // 其他前缀
  }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值