错误-1072896636在Excel中打开xml文件时出现“DTD禁止”,我该怎么办?

我试图在Excel 2013中打开一个XML文件,但是它说因为“禁止DTD”而不能这么做。 我已经search了解决scheme,但是我发现的只是一些应该解决问题的代码片段。

但我一点也不明白! 什么代码? 我只是打开文件,我不写一个程序或任何东西。 我应该在打开文件之前大声背诵这个代码吗? 对不起,但我觉得这真的很荒唐。

有没有一些解决scheme,只是打开文件,而不写一个程序呢? 如果不是,我该怎么做这个代码?

我正在谈论的代码如下

Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0") xmlDoc.setProperty "ProhibitDTD",False xmlDoc.load xmltoload.xml 

我发现该文件可能应该在Word中打开,而不是Excel,但是Word 2013给了我同样的错误。

回答:
看来文件本来是应该在Excel中打开的。 我在互联网上发现,Office 2007及更高版本不禁止DTD,无论如何。 所以我通过在Excel 2003中打开所需的文件成功绕过了这个问题。

解决方法非常简单,打开XML文件并删除指向DTD位置的行。 Excel将根据您的XML文件创build一个XML模式。

所有的XML文档都依赖于哪些字段被允许存在的定义以及每个字段中允许存在哪些值。 这些是通过链接到文档types定义(“DTD”)或XML模式文件在每个XML文件中定义的。

我的理解是Excel 2007及更高版本不支持DTD。 相反,他们期望您的XML文件将引用一个XML模式。

所以,你的底层问题是你的XML文件引用了一个DTD文件,你需要将你的DTD文件转换成一个XML Schema文件(你可以通过像Notepad ++这样的程序打开文档来查看原始文本来validation。

有很多工具可以帮助你做到这一点,但坦率地说,我一直试图让他们都工作几个小时,仍然没有Excel打开我的XML(跑过这个post谷歌search一样错误代码。)

如果你只是试图打开一个XML文件,你可能不想花太多精力 – 但是如果我找出一个快速简单的解决scheme,我会更新。

如果你只需要打开它,那么你可以下载一个免费的程序,将XML转换成CSV:

http://xmltocsv.codeplex.com/

我试了一下,它工作得很好 – 让我的文件立即在Excel 2013中打开。 现在问题解决了。

当然,XML的要点是数据可以与上下文中的其他数据相关联,并且在没有适当的模式或DTD文件的情况下丢失。 但是,如果你只是想打开文件,这应该是现在的工作(对于那些仍然没有Excel 2003躺在那里,虽然我觉得这对你来说一样容易)。

最近我看到与Office365帐户关联的ClickOnce版本的Excel中的错误重新显示。 它不会影响通过CD / ISO分发的Excel版本。 你可以通过版本号来区分两者。

转到文件| 帐户| 点击“关于Excel”button

  • 16.0.4456.1003 – CD / ISO
  • ClickOnce

当XML文件没有DTD 没有XML Schema文件时,触发该错误。 尝试刷新数据连接时,您会收到DTD错误。 如果实际编辑XML查询,数据将确实更新。 我怀疑这是一个错误。

Interesting Posts