0
我试图使用VBA在XML输入上运行XSLT转换。当我在Oxygen(使用Saxon)中运行XSLT时,XSLT工作得很好,但其目的是将其打包成一个“一键式”可执行文件,供没有Oxygen许可证的人使用。由于未定义实体,Visual Basic未能加载XML
我的问题是,在DOMDocument.load步骤的视觉基本扼流圈和死亡。
下面的代码示例:
Dim inDoc = New MSXML.DOMDocument
inDoc.validateOnParse = False
inDoc.resolveExternals = False
inDoc.load([filepath here])
下面是XML的一个代表性位:
<permissions>
<copyright-statement>© 2017 Copyright Owner</copyright-statement>
</permissions>
它失败,“引用未定义的实体‘复制’。”
我无法控制传入的XML - 我必须使用我所给予的 - 所以有办法强制load方法停止检查文件的内容吗?
©是HTML中的有效命名实体,但不是XML,其存在使得文档不可解析。一种选择是预处理字符串并用符号替换实体(保存为utf8)或将其替换为字符代码escape&#char_code –
另外,请考虑添加['<!Entity'](https:// msdn。 microsoft.com/en-us/library/ms256483(v=vs.110).aspx)可能在XSLT步骤。另请参阅[以XML添加实体](https://www.ibm.com/developerworks/library/x-entities/index.html)IBM读取。 – Parfait
'Dim inDoc =新的MSXML.DOMDocument'不是有效的VBA代码。如果您使用的是Microsoft Visual Studio编码,那么您正在编写VB.NET,并且一定要考虑查看LINQ-to-XML可以为您做些什么。如果您使用嵌入在Microsoft Office应用程序中的1999年编辑器进行编码,则您正在编写VBA代码,并且您发布的内容无法编译。请相应地标记您的问题。 –