VBA:从 XFA 表单中提取 XML 数据并传递给 XML 解析器

VBA: Extracting XML data from XFA form and passing to XML parser

我正在尝试使用 VBA 从 XFA 表单中提取 XML 信息。

下面的代码可以将 XML 数据提取到单独的文件中,但它需要用户交互(要求用户为 XML 文件命名)。由于 Adob​​e 的 "safe path" 要求(这似乎无法通过 VBA 自动化绕过),我已经放弃了在没有用户交互的情况下自动执行此操作的尝试。

Dim objPDDoc As New AcroPDDoc
Dim objJSO As Object
Dim strSafePath as String

strSafePath = ""

objPDDoc.Open (FileName)
Set objJSO = objPDDoc.GetJSObject
objJSO.xfa.host.exportdata strSafePath, 0

我宁愿做的是直接使用 MSXML2.DOMDocument60 解析 XML 信息。我希望能够做这样的事情:

Dim XMLDoc As New MSXML2.DOMDocument60

If XMLDoc.Load(objJSO.xfa.host.exportdata) = True Then
    Call funcParse(XMLDoc)
End if

但是,用 objJSO.xfa.host.exportdata 加载 XMLDoc 不起作用,而且我似乎无法弄清楚哪些(如果有的话)可能使用任何方法传递 XML 信息xfa.host methods/properties.

欢迎任何帮助 - 还告诉我这在 VBA.

中是不可能的

尝试这样的事情:

myXMLstring = "<XML>BLA</XML>"
Dim xmlDoc As MSXML2.DOMDocument60
Set xmlDoc = New MSXML2.DOMDocument60
xmlDoc.LoadXML myXMLstring

查看更好的示例:参见例如这个 post: https://desmondoshiwambo.wordpress.com/2012/07/03/how-to-load-xml-from-a-local-file-with-msxml2-domdocument-6-0-and-loadxml-using-vba/

原始海报在这里。经过大约一年的断断续续研究,我找到了解决方案。

通过 AccroPDDoc.GetJSObject 访问 JavaScript 对象后,我可以使用 objJSO.xfa.this.saveXML.

将嵌套的 XML 提取为字符串

这样,我不必先将嵌套的 XML 保存到文件(这需要用户交互)——相反,我可以立即提取嵌套的 XML 并将其传递给解析器。

Dim objPDDoc as New AcroPDDoc
Dim objJSO as Object
Dim XMLDoc As New MSXML2.DOMDocument60

ObjPDDoc.Open (Filename)
Set objJSO = objPDDoc.GetJSObject
If XMLDoc.LoadXML (objJSO.xfa.this.saveXML) = True then
     ParseXML(XMLDoc)
End if