Je sais qu'il est plus facile de lire les fichiers xml sur vb.net mais, comme notre application est toujours sur vb6, j'ai besoin d'un travail autour. mais de toute façon, je suis coincé. De plus, je n'ai pas le contrôle sur le fichier XML car il est généré à partir d'une autre application. Le code court du fichier XML est ci-dessous,
<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>
Si le fichier XML avait été dans un format comme celui-ci, j'aurais pu le lire facilement.
<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>
Mais comme le fichier XML généré n’est pas sous mon contrôle, je suis bloqué là-dessus depuis quelques heures maintenant.
j'ai besoin de lire les paires NAME-VALUE de ce fichier XML. Comment je fais avec ça?
s'il vous plaît aider.
Vous pouvez le faire avec MSXML , qui offre des fonctionnalités similaires à celles de certaines API XML .NET. Je n'ai pas de copie de VB6 pour le moment, mais c'est assez facile. Tout d’abord, ajoutez une référence à MSXML à partir de votre projet VB6. Vous feriez alors quelque chose comme ce qui suit:
selectNodes("/Report/Categories/Category")
. Cela retournera un IXMLDOMNodeList object.name
et value
en utilisant la propriété attributes
du XMLDOMNode ou en utilisant selectSingleNode("@name").Text
et selectSingleNode("@value").Text
.MSXML est assez flexible, il existe donc une syntaxe plus courte que vous pouvez utiliser, mais ce qui précède devrait vous convenir. Si vous ne l'avez pas déjà compris, je posterai le code lorsque j'aurai accès à une machine sur laquelle VB6 est installé.
UDPATE:
Voici un exemple de travail utilisant l'exemple XML que vous avez fourni.
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
Utilisez MSXML comme conseillé dans cette question (et dans l'article lié par Ardman).
Vous pouvez utiliser IXMLDOMElement.getAttributeNode pour lire les attributs.
Par exemple, le code ci-dessous lit le fichier exemple books.xml à partir de MSDN et accède à un attribut. Vous avez besoin d'une référence à une version de 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
Merci, ces réponses aux questions m'a beaucoup aidé. m'a pris 2 jours pour comprendre comment
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
vous pouvez utiliser XSLT pour transformer le code XML de cette structure en paire de valeurs
http://www.xmlfiles.com/articles/sample_chapters/sams_xmlforaspnet/default.asp