我知道在vb.net中读取xml文件比较容易,但由于我们的appl仍然在vb6上,我需要一个解决方法.但不知何故,我被卡住了.我也无法控制xml文件,因为它是从另一个应用程序生成的.xml文件中的简短代码如下,
如果XML文件是这样的格式,我本可以轻松阅读.
CASHMAN Cash Management IM Inventory Management POS Point of Sale PRODUCT Product
但是由于生成的xml文件不在我的控制范围内,因此我现在已经过了几个小时了.
我需要从这个xml文件中读取NAME-VALUE对.我该怎么做呢?
请帮忙.
您可以使用MSXML来完成它,它提供与某些.NET XML API类似的功能.我现在没有VB6的副本,但它很容易.首先,从VB6项目中添加对MSXML的引用.然后,您将执行以下操作:
创建MSXML2.DOMDocument的实例
调用Load方法来解析XML文件
打电话给selectNodes("/Report/Categories/Category")
.这将返回IXMLDOMNodeList对象.
然后,您可以遍历节点列表检索每个IXMLDOMNode通过项目或nextNode.
然后,您可以获取name
并value
使用attributes
XMLDOMNode 的属性或使用selectSingleNode("@name").Text
和selectSingleNode("@value").Text
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