在vb6中阅读xml文件

前端之家收集整理的这篇文章主要介绍了在vb6中阅读xml文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道在vb.net中阅读xml文件更容易,但是由于我们的应用程序仍然在vb6上,我需要一个工作。但不知何故,我被卡住了。我也不能控制xml文件,因为它是从另一个应用程序生成的。下面是xml文件的短代码
<Report>
           <Categories>
                   <Category name="CASHMAN" value="Cash Management" />
                   <Category name="IM" value="Inventory Management" />
                   <Category name="POS" value="Point of Sale" />
                   <Category name="PRODUCT" value="Product" />
           </Categories>
    </Report>

如果XML文件的格式是这样的,那么我可以很容易地阅读。

<Report>
           <Categories>
                   <name>CASHMAN</name>
                   <value>Cash Management</value>
           </Categories>
           <Categories>
                   <name>IM</name>
                   <value>Inventory Management</value>
           </Categories>
           <Categories>
                   <name>POS</name>
                   <value>Point of Sale</value>
           </Categories>
           <Categories>
                   <name>PRODUCT</name>
                   <value>Product</value>
           <Categories>
    <Report>

但是,由于生成的xml文件不在我的控制之下,所以我几个小时以后就停下来了。

我需要从这个xml文件中读取NAME-VALUE对。我该怎么办?

请帮忙。

您可以使用 MSXML,它提供与某些.NET XML API类似的功能。我现在没有VB6的副本,但这很简单。首先,从VB6项目中添加一个参考 MSXML。然后,您将执行以下操作:

>创建一个MSXML2.DOMDocument的实例
>调用Load方法来解析XML文件
>调用selectNodes(“/ Report / Categories / Category”)。这将返回一个IXMLDOMNodeList对象。
>然后,您可以循环遍历通过itemnextNode检索每个IXMLDOMNode的节点列表。
>然后,您可以使用XMLDOMNode的attributes属性或使用selectSingleNode(“@ name”)获取名称和值。Text和selectSingleNode(“@ value”)。文本

MSXML是相当灵活的,所以你可以使用更短的语法,但上面应该适合你。如果你还没有弄清楚,我会在安装VB6的机器上发布代码

UDPATE:

以下是使用您提供的XML示例的工作示例。

Sub ParseXmlDocument()
   Dim doc As New MSXML2.DOMDocument
   Dim success As Boolean

   success = doc.Load(App.Path & "\test.xml")
   If success = False Then
      MsgBox doc.parseError.reason
   Else
      Dim nodeList As MSXML2.IXMLDOMNodeList

      Set nodeList = doc.selectNodes("/Report/Categories/Category")

      If Not nodeList Is Nothing Then
         Dim node As MSXML2.IXMLDOMNode
         Dim name As String
         Dim value As String

         For Each node In nodeList
            ' Could also do node.attributes.getNamedItem("name").text
            name = node.selectSingleNode("@name").Text
            value = node.selectSingleNode("@value").Text
         Next node
      End If
   End If
End Sub

猜你在找的VB相关文章