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代碼,並且您發佈的內容無法編譯。請相應地標記您的問題。 –