OVH Cloud OVH Cloud

Petit problème avec Xpath

1 réponse
Avatar
Bull
Bonsoir,

Je veux pouvoir parser un fichier XML. Pour cela, j'utilise le code
suivant :

Dim xmlDocument as New XmlDocument
xmlDocument.Load("http://url.xml")
Dim XmlNode As Xml.XmlNode = XmlDocument.SelectSingleNode("//node2")

Cela fonctionne parfaitement avec un fichier XML de ce type :

<node1>
<node2>news</node2>
</node1>

Cependant, XmlNode vaut nothing si le fichier XML lu est le suivant :

<node1 xmlns:abc="http://www.toto.fr">
<node2>news</node2>
</node1>

Quelqu'un peut-il m'expliquer pourquoi et surtout comment faire pour
accéder au contenu du noeud node2 dans ce dernier exemple ?

Merci beaucoup,

--
Cordialement,
Bull

1 réponse

Avatar
Zoury
Salut Bull ! :O)

Cependant, XmlNode vaut nothing si le fichier XML lu est le suivant :

<node1 xmlns:abc="http://www.toto.fr">
<node2>news</node2>
</node1>



euhmm.. Veux-tu dire ceci ?! :
<abc:node1 xmlns:abc="http://www.toto.fr">
<abc:node2>news</abc:node2>
</abc:node1>

Car avec l'exemple que tu as posté, SelectSingleNode("//node2") fonctionne
chez moi..


Quelqu'un peut-il m'expliquer pourquoi et surtout comment faire pour
accéder au contenu du noeud node2 dans ce dernier exemple ?



Si oui, emploi un XmlNameSpaceManager :
'***
Option Explicit On

Imports System.Xml

Module MainModule

Public Sub Main()

Dim xd As New XmlDocument
xd.LoadXml("<?xml version='1.0' encoding='utf-8' ?>" & vbNewLine & _
"<abc:node1 xmlns:abc=""http://www.toto.fr"">" &
vbNewLine & _
"<abc:node2>news</abc:node2>" & vbNewLine & _
"</abc:node1>")

Dim xnm As New XmlNamespaceManager(xd.NameTable)
xnm.AddNamespace("abc", "http://www.toto.fr")

Dim xn As XmlNode = xd.SelectSingleNode("//abc:node2", xnm)
Console.WriteLine(Not xn Is Nothing)

End Sub

End Module
'***

--
Cordialement
Yanick
MVP pour Visual Basic