【发布时间】:2017-08-22 13:23:34
【问题描述】:
我正在尝试使用 VBA 中的 MSXML2.DOMDocument 对象将 XML 文件加载到 Excel 电子表格中。
我有以下方法:
Sub NEWTestXML()
Dim xmlDoc As Object
Dim xmlNodeList As Object
Dim getFirstChild As Object
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False: xmlDoc.validateOnParse = False
xmlDoc.Load ("H:\Anders\BankStatements\LoadXML\CAMT\20170818_070648_DANSKEBANK_DECS_20170818070531_3.xml")
If xmlDoc.parseError.ErrorCode <> 0 Then
MsgBox "Error was " + xmlDoc.parseError.reason
End If
'Get Document Elements
Set xmlNodeList = xmlDoc.DocumentElement
'Get first child ( same as ChildNodes(0) )
Set getFirstChild = xmlNodeList.FirstChild
'Print first child XML
Debug.Print getFirstChild.XML
'Print first child Text
Debug.Print getFirstChild.Text
Set getFirstChild = Nothing
Set xmlNodeList = Nothing
Set xmlDoc = Nothing
End Sub
取自通过 Google 找到的示例。
我从银行收到的文件包含一个 NULL 字符,这使我无法使用上述方法加载文件。
删除 NULL 值解决了我遇到的问题。
它们看起来像这样:
我一直在尝试使用 Access-databases 和各种方法加载这些文件,但每次这些 NULL 值都让我变得更好。
我的问题是:
是否有任何编程方法可以删除这些 NULL 值,在 Notepad++ 中显示? MSXML2 或类似的参数?
我之前创建了一个复制 XML 文件并删除最后一行的方法,但我想在当前解决方案中避免这种情况。
【问题讨论】:
-
空字符由“\x00”表示。以文本模式打开文件并将所有出现的 \x00 替换为空字符串。然后通过 XML 解析器加载它。
-
@EylM 没那么简单。正确“以文本模式打开文件”需要事先了解文件编码。
-
它是“utf-8” - 查看示例。
-
嗨,EyIM。感谢您的建议,但由于我们每天都有数百个文件,因此在 notepad++ 中手动打开它们是不可行的。据我所知,即使您有可能一次编辑多个文件。
标签: xml vba xpath null notepad++