5

我正在对这个非常古老的 Web 应用程序进行现代化改造以在现代浏览器上运行,但我遇到了 IE 10 的问题。最终我不得不将 XML 文档转换为字符串:

function xmlToString(xmlElement)
{
     if (document.evaluate)
     {
          var serializer = new XMLSerializer()
          var strXml = serializer.serializeToString(xmlElement)
     }
     else
          var strXml = xmlElement.xml
}

第一个 if 块用于 Firefox 和 Chrome;效果很好。else 之后的行用于 Internet Explorer。它适用于 8 和 9 但不是 10(它必须适用于所有 3)。从我收集到的信息来看,这是因为 IE 10 从以前的微软处理 xml 的方式转向更接近标准的方式。但是,我还没有找到 IE 10 中 .xml 属性的替代品?

有谁知道如何在 IE 10 中将 XML 文档转换为字符串?

谢谢。

编辑:所以这里问题的实际原因是在 IE 10 中 xmlElement.xml 的值是未定义的。此外,它没有将 xml 文档转换为字符串;该属性已经是 xml 文档的字符串表示形式。不过,仍然需要弄清楚如何在 IE 10 中执行此操作。

编辑2:所以我想出了答案,但显然我几个小时都不允许实际回答我自己的问题,所以我现在就在这里复制它:

AA当然,在我发布这篇文章大约 5 分钟后,我终于找到了要问 Google 的正确问题……-_-

无论如何,事实证明 IE 9 及更高版本支持 XMLSerializer,因此需要弄清楚如何在不影响任何必要浏览器的情况下检测该功能。这个页面向我展示了一种很棒的检测 javascript 功能的方法,它让一切正常。

这是最终代码,它适用于 IE 8 和 10 以及最新的 Chrome 和 Firefox:

function xmlToString(xmlElement)
{
    if (typeof XMLSerializer == 'function')
    {
        var serializer = new XMLSerializer()
        var strXml = serializer.serializeToString(xmlElement)
    }
    else
        var strXml = xmlElement.xml
}

最后一行仍然必须在那里才能在 IE 8 上运行

4

2 回答 2

0

尝试使用DOMParser.

function xmlToString(xmlElement)
{
     if (document.evaluate)
     {
        var parser = new DOMParser();
        var strXml = parser.parseFromString(xmlElement, "text/xml");
     }
     else
        var strXml = xmlElement.xml
}

查看这篇关于DOMParser 和 XMLSerializer的文章

这是一个演示

于 2013-08-22T14:22:36.890 回答
0

简单让IE10使用第一个block(已经被Firefox和Chrome使用了)

于 2013-08-22T14:22:47.127 回答