Bonsoir à tous,
J'ai quelques soucis pour manipuler XPath, alors je vous explique mon problème. J'ai une application qui exécute une procédure stockée, qui me retourne un résultat sous format XML (grâce à la ligne FOR XML AUTO). Je stocke ce résultat dans un DataSet, puis je l'enregistre au format XML dans mon répertoire. Jusque là, pas trop de problèmes. Sauf qu'au cours de cet enregistrement, j'ai des noeuds qui encapsulent mon véritable document qui se sont ajoutés.
Voilà ce que j'obtiens dans mon document XML. Du coup, ma feuille de style XSL, qui met en page mon document XML (grâce à XSLT Transform) ne marche plus (vu qu'y a des noeuds en plus...). Ca me dérangerait pas de modifier ma feuille XSL en conséquence, mais le noeud XML_F52E2B61-18A1-11d1-B105-00805F49916B me paraît louche. Sa structure me prête à croire qu'il peut changer à tout moment, selon les paramètres passés à la procédure stockée par exemple.<NewDataSet>
<Facture>
<XML_F52E2B61-18A1-11d1-B105-00805F49916B>Ici se trouve mon document XML
</XML_F52E2B61-18A1-11d1-B105-00805F49916B>
</Facture>
</NewDataSet>
Sur les forums de Microsoft, on m'a conseillée de m'appuyer sur le noeud "Facture" (qui ne changera pas, puisque c'est moi qui donne ce nom, en remplissant le DataSet avec le DataAdapter), puis de récupérer le contenu de son noeud enfant.
Voici mon code :
Jusque là, tout marche. Mais je n'arrive pas à parcourir l'arborescence du document. Je voudrais que objXPNav pointe sur le noeud Facture, et qu'il récupère le contenu du noeud enfant (sans le noeud enfant en lui-même) pour l'insérer dans un nouveau fichier XML, à partir duquel je pourrais effectuer mon XSLT Transform et afficher mon document.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Dim sXMLPath As String = "[...]\facture.xml" Dim objXMLDoc As New XmlDocument() objXMLDoc.Load(sXMLPath) Dim objXPNav As XPathNavigator = objXMLDoc.CreateNavigator() objXPNav.MoveToRoot()
Si je fais objXPNav.MoveToFirstChild(), mon XPath pointe sur le noeud NewDataSet.
J'ai essayé de chercher sur le forum, mais je n'ai rien trouvé à ce sujet en VB. Si j'ai loupé le post, j'en suis désolée, si vous pouviez m'indiquer le lien pour que j'aille le lire ^^
Merci d'avance
Partager