我知道在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文件中读取名称-值对。我该怎么做呢?
请帮帮忙。
发布于 2010-10-06 17:13:07
按照本问题(以及Ardman链接的文章)中的建议使用MSXML。
您可以使用IXMLDOMElement.getAttributeNode读取属性。
例如,下面的代码从MSDN读取sample books.xml file并访问属性。您需要引用a version of Microsoft XML。
Private Sub Form_Load()
Dim xmlDoc As New MSXML2.DOMDocument30
Dim nodeBook As IXMLDOMElement
Dim nodeId As IXMLDOMAttribute
Dim sIdValue As String
xmlDoc.async = False
xmlDoc.Load App.Path & "\books.xml"
If (xmlDoc.parseError.errorCode <> 0) Then
Dim myErr
Set myErr = xmlDoc.parseError
MsgBox ("You have error " & myErr.reason)
Else
Set nodeBook = xmlDoc.selectSingleNode("//book")
Set nodeId = nodeBook.getAttributeNode("id")
sIdValue = nodeId.xml
MsgBox sIdValue
End If
End Sub
发布于 2010-10-06 16:14:02
您可以使用XSLT将XML从该结构转换为值对
http://www.xmlfiles.com/articles/sample_chapters/sams_xmlforaspnet/default.asp
发布于 2018-05-18 01:39:08
谢谢,这个问答对我帮助很大。我花了两天时间才弄明白,
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
https://stackoverflow.com/questions/3870485
复制相似问题