加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在vb6中阅读xml文件

发布时间:2020-12-17 00:00:53 所属栏目:大数据 来源:网络整理
导读:我知道在vb.net中阅读xml文件更容易,但是由于我们的应用程序仍然在vb6上,我需要一个工作。但不知何故,我被卡住了。我也不能控制xml文件,因为它是从另一个应用程序生成的。下面是xml文件的短代码, Report Categories Category name="CASHMAN" value="Cas
我知道在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对象。
>然后,您可以循环遍历通过item或nextNode检索每个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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读