我知道在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