在vb6中读取xml文件
我知道在vb.net中读取xml文件更容易,但由于我们的应用程序仍在vb6上,我需要一个解决方法。但不知怎么的,我被卡住了。此外,我无法控制xml文件,因为它是从另一个应用程序生成的。下面是xml文件中的简短代码在vb6中读取xml文件,xml,vb6,Xml,Vb6,我知道在vb.net中读取xml文件更容易,但由于我们的应用程序仍在vb6上,我需要一个解决方法。但不知怎么的,我被卡住了。此外,我无法控制xml文件,因为它是从另一个应用程序生成的。下面是xml文件中的简短代码 <Report> <Categories> <Category name="CASHMAN" value="Cash Management" />
<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文件中读取名称-值对。我该怎么做呢
请提供帮助。您可以使用XSLT将XML从该结构转换为值对 按照这个问题(以及Ardman链接的文章)中的建议使用 您可以使用来读取属性 例如,下面的代码从MSDN读取并访问属性。你需要一个参考资料
Private子表单_Load()
Dim xmlDoc作为新的MSXML2.DOMDocument30
将节点簿变暗为IXMLDOMELENT
作为IXMLDOMDAttribute的Dim nodeId
将值设置为字符串
xmlDoc.async=False
xmlDoc.Load App.Path&“\books.xml”
如果是(xmlDoc.parseError.errorCode 0),则
暗淡的迈尔
设置myErr=xmlDoc.parseError
MsgBox(“您有错误”&myErr.reason)
其他的
设置nodeBook=xmlDoc.selectSingleNode(//book)
Set nodeId=nodeBook.getAttributeNode(“id”)
sIdValue=nodeId.xml
MsgBox sIdValue
如果结束
端接头
您可以使用它,它提供了与某些.NET XML API类似的功能。我现在没有VB6的副本,但它很简单。首先,添加对来自VB6项目的引用。然后,您将执行以下操作:
- 创建的实例
- 调用该方法来解析XML文件
- 调用
。这将返回一个对象选择节点(“/Report/Categories/Categories”)
- 然后可以通过节点列表循环检索每个via或
- 然后可以使用XMLDOMNode的属性或使用
和selectSingleNode(@name”).Text
selectSingleNode(@value”).Text来获取
和name
。Textvalue
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
谢谢你,这些问题的回答对我帮助很大。我花了两天的时间想办法
Set xmlDoc = CreateObject("Msxml2.DOMDocument")
Dim nodeBook
Dim nodeId
xmlDoc.async = False
xmlDoc.Load ("xmlfile url")
If (xmlDoc.parseError.errorCode <> 0) Then
Dim myErr
Set myErr = xmlDoc.parseError
MsgBox ("You have error " & myErr.reason)
Else
Set nodeBook = xmlDoc.selectSingleNode("//Program")
Set nodeId = nodeBook.getAttributeNode("description")
wscript.Echo nodeId.value
End If
Set xmlDoc=CreateObject(“Msxml2.DOMDocument”)
昏暗的笔记本
暗节
xmlDoc.async=False
Load(“xmlfileurl”)
如果是(xmlDoc.parseError.errorCode 0),则
暗淡的迈尔
设置myErr=xmlDoc.parseError
MsgBox(“您有错误”&myErr.reason)
其他的
设置nodeBook=xmlDoc.selectSingleNode(//程序)
Set nodeId=nodeBook.getAttributeNode(“说明”)
wscript.Echo nodeId.value
如果结束
在发布代码作为答案时,最好能至少解释一下您的代码。哦,对不起,我很糟糕,我从url获取了xml文件并存储了一些数据供以后使用,我在访问值时遇到了问题,例如,但能够获取刚存储在值中的数据这是我缺少的关键“getAttributeNode(”)"
Set xmlDoc = CreateObject("Msxml2.DOMDocument")
Dim nodeBook
Dim nodeId
xmlDoc.async = False
xmlDoc.Load ("xmlfile url")
If (xmlDoc.parseError.errorCode <> 0) Then
Dim myErr
Set myErr = xmlDoc.parseError
MsgBox ("You have error " & myErr.reason)
Else
Set nodeBook = xmlDoc.selectSingleNode("//Program")
Set nodeId = nodeBook.getAttributeNode("description")
wscript.Echo nodeId.value
End If