javascript - XML 解析在 Chrome 中不起作用

标签 javascript xml activexobject domparser

对于 XML 字符串,例如:

var xml_string = '<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">   <env:Header/>   <env:Body>      <dn:response id="?" xmlns:dn="http://www.datanomic.com/ws">         <dn:record>            <dn:Result>John</dn:Result>         </dn:record>         <dn:record>            <dn:Result>Johnghghg</dn:Result>         </dn:record>         <dn:record>            <dn:Result>Johnn</dn:Result>         </dn:record>         <dn:record>            <dn:Result>Johnngy</dn:Result>         </dn:record>         <dn:record>            <dn:Result>Johnnnn</dn:Result>         </dn:record>         <dn:record>            <dn:Result>Johnny</dn:Result>         </dn:record>         <dn:record>            <dn:Result>Johns</dn:Result>         </dn:record>         <dn:record>            <dn:Result>Johnson</dn:Result>         </dn:record>         <dn:record>            <dn:Result>Johnston</dn:Result>         </dn:record>      </dn:response>   </env:Body></env:Envelope>';

我正在使用以下代码(从SO本身获得)

if (window.DOMParser)
  {
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(xml_string,"text/xml");
  }
else // Internet Explorer
  {
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    xmlDoc.loadXML(xml_string);
  }
  var nodes = xmlDoc.getElementsByTagName("dn:Result");
  console.log(nodes); // returning empty on Chrome, working fine in Firefox and IE10

如果我从 getElementsByTagName 中删除 dn:,它就会开始在 Chrome 中工作,但在 Firefox 和 IE 中不起作用。那么有没有一个解决方案可以在所有 3 个环境中工作? 浏览器?

这是便于测试的 fiddle :JSFiddle

PS:jQuery 不是一个选项。我希望这可以通过简单的旧 Javascript 来完成。

最佳答案

我建议使用 W3C DOM Level 2 方法 getElementsByTagNameNS(如果可用),请参阅 http://jsfiddle.net/bygx406g/ ,将一行更改为

var nodes = typeof xmlDoc.getElementsByTagNameNS != 'undefined' ? xmlDoc.getElementsByTagNameNS('http://www.datanomic.com/ws', 'Result') : xmlDoc.getElementsByTagName("dn:Result");

关于javascript - XML 解析在 Chrome 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34131407/

相关文章:

asp.net - 使用 javascript 进行回发

java - jackson fastxml 将命名空间添加到根元素

ASP.NET 无法创建 ActiveX 组件

javascript - 访问 Lotus Notes 对象

Android开发-图形问题/XML

javascript - 这是 NodeJS 中的变量作用域错误还是我只是需要更多的 sleep

javascript - Handlebars exphbs 不是函数

javascript - 在 nodejs 公用文件夹中公开 nodejs 库

sql - 在 SQL Server 中创建嵌套 XML 文件