jQuery parseXML适用于IE,但不适用于Chrome

时间:2014-04-04 20:20:36

标签: javascript jquery xml google-chrome parsexml

我在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 Doc,但它返回False。那么什么不适用于Chrome?

1 个答案:

答案 0 :(得分:0)

XML规范说,XML declaration之类<?xml version="1.0"?>可能只出现在文件的开头,因此Chrome只是拒绝无效的XML。 Internet Explorer比Chrome稍微宽松一些,并接受此无效文档。

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