【发布时间】:2018-03-19 06:20:43
【问题描述】:
我有一个要解析的 xml 文件:
这是xml文件内容
<MYSTUFF>
<COMPANYNAMES>
<COMPANYNAME>JUMPIN (JIMMY) LIMITED</COMPANYNAME>
<COMPANYNAME>BLADE RUNNER'S TRANSPORT</COMPANYNAME>
<COMPANYNAME>P Griffiths & Sons</COMPANYNAME>
<COMPANYNAME>SOMETIMES, NEVER</COMPANYNAME>
<COMPANYNAME>MASTER/CLASS</COMPANYNAME>
</COMPANYNAMES>
<FIRSTNAMES>
<FIRSTNAME>Richard</FIRSTNAME>
<FIRSTNAME>Jo & hn</FIRSTNAME>
<FIRSTNAME>Paul</FIRSTNAME>
<FIRSTNAME>Geo, rge</FIRSTNAME>
<FIRSTNAME>Ringo</FIRSTNAME>
</FIRSTNAMES>
<LASTNAMES>
<LASTNAME>Davies'</LASTNAME>
<LASTNAME>Lennon</LASTNAME>
<LASTNAME>McCartney(3)</LASTNAME>
<LASTNAME>Harrison</LASTNAME>
<LASTNAME>St/ar</LASTNAME>
</LASTNAMES>
</MYSTUFF>
这是代码:
Dim XDoc As Object
Set XDoc = CreateObject("MSXML2.DOMDocument")
XDoc.async = False: XDoc.validateOnParse = False
XDoc.Load (ThisWorkbook.Path & "\test.xml")
'Get Document Elements
Set lists = XDoc.DocumentElement
'Traverse all elements 2 branches deep
For Each listNode In lists.ChildNodes
For Each fieldNode In listNode.ChildNodes
Debug.Print "[" & fieldNode.BaseName & "] = [" & fieldNode.Text & "]"
Next fieldNode
Next listNode
Set XDoc = Nothing
我正在获取对象变量 with or with block not set on this line:
For Each listNode In lists.ChildNodes
【问题讨论】:
-
这是因为
XDoc.DocumentElement没有返回任何内容,可能是因为XDoc.Load解析文件失败。 -
从 xml 文件中删除
<COMPANYNAME>MASTER/CLASS</COMPANYNAME>和<LASTNAME>St/ar</LASTNAME>行,然后重试 -
您的 XML 文件格式不正确,因为与符号
&amp;是 special XML entity,需要转义为&amp; -
Lists 在哪里声明为变量?输入?