跨浏览器标准的JavaScript中Xml处理

7

我正在尝试找出如何在JavaScript中处理XML。所以我在谷歌上搜索了一下。问题是,我不知道我看到的教程是否仅适用于IE。

在JavaScript中处理XML数据的“标准”方法是什么?

编辑: 感谢大家的回答。 那么我想问另一个问题。是否有某种第三方库可以让我透明地编写JS代码,而不必担心跨浏览器功能?


1
回应您的编辑:您可能需要像jQuery或Prototype这样的框架——两者都是旨在减少跨浏览器问题并提供有用的实用方法/函数集的框架。 - Jonathan Fingland
编辑实际上应该是一个新问题,但是是的,jQuery有一个parseXML()方法。 - mydoghasworms
5个回答

6

也许你应该看看 sarissa。它是一个跨浏览器的库,我发现非常有用且易于使用。它允许你:

  • 从URL或字符串中加载XML,
  • 执行XSLT转换,
  • 应用XPath查询。

适用于主流浏览器,并且其许可证为GPL。


2
另一个选择是使用第三方库,比如谷歌的AjaXSLT,来抽象出特定于浏览器的代码。这意味着你只需要专注于调用在XML规范中定义的标准DOM方法。我个人只有使用过谷歌的解析器,因此不确定它是否是最好的选择。也许其他人能够推荐其他解析器?

1

请使用w3schools.com上的教程。它们说明了如何在各种浏览器中工作。

例如(代码片段)

try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.loadXML(txt);
  return xmlDoc;
  }
catch(e)
  {
  parser=new DOMParser();
  xmlDoc=parser.parseFromString(txt,"text/xml");
  return xmlDoc;
  }

此外,只是为了回答您的直接问题。有一种标准方法(在上面的片段中,它在catch块中),但Internet Explorer不支持标准方法...所以你只能使用像上面那样的东西。

这仅适用于启用ActiveX的IE和Mozilla浏览器。 - ko-dos

1

在 JavaScript 中处理 XML 的“标准”方式是使用一个或多个标准或广泛可用的 API。其中最广泛采用的 API 为:

  • DOMParser 对象,允许将 XML 字符串解析为 DOM 结构
  • XMLSerializer 对象,将 DOM 结构序列化为 XML 字符串
  • XSLTProcessor 对象,启用 XSLT 处理
  • XMLHttpRequest 对象,用于通过网络发送 XML

所有这些对象都可在现代(非 IE)Web 浏览器中使用。由于幸运的机会,自 IE5 或更早以来,IE 也一直拥有这些功能的实现,只是它们具有不同的 API。由于上述对象在 IE 中不可用,因此可能需要对其进行实现,像 Ample SDKSarissa 这样的项目也实现了类似的功能。

例如,看看启用跨浏览器 DOMParser 的代码可能如何:

if (!window.DOMParser) {
    var cDOMParser = function(){};
    cDOMParser.prototype.baseURI = null;
    cDOMParser.prototype.parseFromString = function(sXml, sMime) {
        var oDocument   = new ActiveXObject("Microsoft.XMLDOM");
        oDocument.async         = false;
        oDocument.validateOnParse   = false;
        oDocument.loadXML(sXml);

        return oDocument;
    };
    window.DOMParser = cDOMParser;
};

0
一个简单的方法是将XML转换为JSON格式。(谷歌“xml to json”有几个选项。)如果可能的话,我建议在服务器端进行转换为JSON。它比XML更紧凑,这意味着下载时间更快。它也比较少处理器密集型解析,因此在客户端上运行速度更快。
请注意,如果您正在处理少量的XML内容,则差异将是微不足道的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接