我知道在vb.net中读取xml文件比较容易,但由于我们的appl仍然在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>
Run Code Online (Sandbox Code Playgroud)
如果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>
Run Code Online (Sandbox Code Playgroud)
但是由于生成的xml文件不在我的控制范围内,因此我现在已经过了几个小时了.
我需要从这个xml文件中读取NAME-VALUE对.我该怎么做呢?
请帮忙.
Gar*_*ett 27
您可以使用MSXML来完成它,它提供与某些.NET XML API类似的功能.我现在没有VB6的副本,但它很容易.首先,从VB6项目中添加对MSXML的引用.然后,您将执行以下操作:
selectNodes("/Report/Categories/Category")
.这将返回IXMLDOMNodeList对象.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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
65734 次 |
最近记录: |