【问题标题】:jQuery parseXML works in IE, but not ChromejQuery parseXML 适用于 IE,但不适用于 Chrome
【发布时间】:2014-05-17 07:53:04
【问题描述】:

我在 HTML 文件的脚本标记中嵌入了一些(实际上是很多)XML。我抓住这些数据来处理

var xmlString = document.getElementById('xmldata').innerHTML;

以下是数据示例:

<script id="xmldata" type="text/xml">
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
 <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
  <Author>Nick</Author>

当我使用 $.parseXML(xmlString) 时,我在 Chrome 中得到以下信息:

Uncaught Error: Invalid XML: 
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:offic...<omitted>...

奇怪的是,它在 Internet Explorer 11 中运行良好。我使用$.isXMLDoc(xmlString) 测试它是否已经是 XML 文档,但它返回 False。那么这在 Chrome 中不起作用是什么?

【问题讨论】:

    标签: javascript jquery xml google-chrome parsexml


    【解决方案1】:

    XML 规范说像&lt;?xml version="1.0"?&gt; 这样的XML declaration 只能出现在文件的开头,因此Chrome 只是拒绝无效的XML。 Internet Explorer 比 Chrome 稍微宽松一点,并且接受这个无效的文档。

    解决您的问题的一种可能方法是从 HTML 文档中删除此 XML 声明。

    【讨论】:

    • 这就是问题所在。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 2019-10-26
    • 2013-05-03
    • 2013-03-24
    • 1970-01-01
    • 2013-04-22
    相关资源
    最近更新 更多