我试图在Excel 2013中打开一个XML文件,但它说它不能这样做,因为" DTD禁止"。我已经搜索了解决方案,但我找到的只是一些代码可以解决这个问题。
但我完全没有得到它!什么代码?我只是打开文件,我不是在编写程序或任何东西。我应该在打开文件之前大声朗诵代码还是什么?对不起,但我觉得这很荒谬。
是否有一些解决方案可以在不编写程序的情况下打开文件?如果没有,我该怎么做这个代码?
我正在谈论的代码如下
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中打开所需的文件成功绕过了这个问题。
答案 0 :(得分:6)
解决方法非常简单,打开XML文件,然后删除指向DTD位置的行。 Excel将根据您的XML文件创建XML模式。
答案 1 :(得分:1)
所有XML文档都依赖于允许存在哪些字段的定义以及每个字段中允许存在的值。这些是在每个XML文件中通过链接到文档类型定义(" DTD")或XML架构文件来定义的。
我的理解是Excel 2007及更高版本不支持DTD。相反,他们希望您的XML文件将引用XML Schema。
因此,您的基本问题是您的XML文件引用了DTD文件,您需要将DTD文件转换为XML Schema文件(您可以通过使用Notepad ++等程序打开文档并查看原始文件来验证这一点。文本。)
有很多工具可以帮助你做到这一点但是,坦率地说,我一直试图让他们全部工作几个小时但仍然没有Excel打开我的XML(在这篇文章中搜索了相同的错误代码。)
如果您只想尝试一次性打开XML文件,您可能不想付出太多努力 - 但如果我找到一个快速简便的解决方案,我会更新
如果您只需要打开它,可以下载一个免费程序,将XML转换为CSV:
我尝试了它并且效果很好 - 让我的文件立即在Excel 2013中打开。问题现在解决了。
当然,XML的意思是数据可以与其他数据相关联,并且在没有正确的模式或DTD文件的情况下丢失。但是如果你只是想要打开这个文件,那么现在应该可以使用(对于那些还没有Excel 2003的人来说,虽然我想这对你来说同样容易。)
答案 2 :(得分:0)
最近,我发现此错误在与Office365帐户关联的Excel的ClickOnce版本中重现。它不影响通过CD / ISO分发的Excel版本。您可以通过版本号来区分两者之间的区别。
转到文件|帐户|点击"关于Excel"按钮
当XML文件没有DTD 且没有XML Schema文件时,会触发错误。尝试刷新数据连接时,会出现DTD错误。如果您实际编辑XML查询,则数据确实会更新。我怀疑这是一个错误。