使用oDOC

时间:2016-12-20 12:23:16

标签: xml excel vba excel-vba

我有一个不同动物的列表(遵循XML文件), 一些的动物有孩子, 我写了一些印有所有儿童动物名字的东西 它不会起作用 它说“对象不支持此属性或方法” 如果我要替换这一行: Set list =oDoc.SelectSingleNode("/animal/cat[(@ID)=""17""]")

那个:     Set list = xDoc.SelectNodes("/animal/cat[(@ID)=""17""]") 我的代码工作得很完美,但我不能替换它,因为其他方法要求列表定义如下:     Set list = oDoc.SelectSingleNode("/animal/cat[(@ID)=""17""]")

任何想法,解决我的问题?

注意:不是每个动物都有一个孩子,如果有的话,有些孩子会有4个孩子等等。(我不知道动物可以有多少个孩子)

VBA(使用XDoc):

Sub test()

    Dim xml As String
          xml = ("C:.....\example2.xml")
    Dim xDoc As DOMDocument
    Set xDoc = New DOMDocument

    Dim list As Object

    Dim attr As IXMLDOMAttribute
    Dim node As IXMLDOMNode
    Dim childNode As IXMLDOMNode
    Dim oDoc As New MSXML2.DOMDocument60


   oDoc.validateOnParse = True

  'xDoc.Load xml 
  'oDoc.Load xml

  ' Set list = XDoc.SelectNodes("/animal/cat[(@ID)=""17""]")
  ' Set list = oDoc.SelectSingleNode("/animal/cat[(@ID)=""17""]")

  For Each node In list <-- **this line will not work!!**
        If (node.HasChildNodes) Then

            For Each childNode In node.ChildNodes
            Set attr = childNode.Attributes.getNamedItem("Name")
                 Debug.Print attr.Text
            Next childNode
        End If
    Next node

End Sub

XML:

<animal>
           <dog ID="16" Name="Lucy"/>
           <cat ID="156" Name="Chloe"/>
           <cat ID="17" Name="GAL">
                 <child ID="173" Name="Tigger"/>
                 <child ID="1256" Name="Angel"/>
                 <child ID="256" Name="Peanut"/>
           </cat>
           <cat ID="18" Name="Charlie">
                 <child ID="173" Name="Smokey"/>
           </cat>
  </animal>

0 个答案:

没有答案