[vb][xml]

Résolu
keliante Messages postés 36 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 13 février 2006 - 5 janv. 2006 à 12:51
keliante Messages postés 36 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 13 février 2006 - 6 janv. 2006 à 11:00
Bonjour à tous,



Mon problème est que mon code vb ne lit pas correctement ma bdd de mon fichier xml. Il ne trouve pas les nœuds sauf un root.



Alors voici le code vb qui est dans ma page aspx :



Sub Page_Load(Sender As Object, E As EventArgs)



Dim typepage As String

Dim produit As String



typepage = Request.Params("type")

produit = Request.Params("produit")



Dim bdd As String

Dim docxml As New XmlDocument

Dim Noeud As XmlNode

Dim Noeuds As XmlNodeList

Dim scritere As String



Select Case typepage



Case "h"


bdd = "file:///C:\ xx\xx\xxx \bddhomme.xml"

Case "0"


bdd = "file:///C:\ xx\xx\xxx \bddhome.xml"

End Select



docxml.Load(bdd)

scritere "/root/row[REFERENCE_PRODUIT """ + produit + """]"



Noeud = docxml.selectsinglenode(scritere)

Noeuds = docxml.childnodes



For Each Noeud In Noeuds



Select Case Noeud.Name

Case "IMAGE"



Case "PRIX_HT"


prix.Text = Noeud.InnerText

zonetest.Text = bdd

Case "DESIGNATION_FR"


titre.Text = Noeud.InnerText

zonetest.Text = bdd

Case "DESCRIPTION_FR"


description.Text = Noeud.InnerText

zonetest.Text = bdd

End Select

Next



End Sub



Voici ma base de données type que j'ai :



<?xml version="1.0" encoding="UTF-8"?>

<root>

<row>

<RAYON_FR>Bébé</RAYON_FR>

<RAYON_EN>Baby</RAYON_EN>

<SOUS_RAYON_FR>Petits hauts</SOUS_RAYON_FR>

<SOUS_RAYON_EN>Tops</SOUS_RAYON_EN>

<REFERENCE></REFERENCE>

<CODE_COULEUR></CODE_COULEUR>

<DESIGNATION_FR>kikou</DESIGNATION_FR>

<DESIGNATION_EN>kikou</DESIGNATION_EN>

<DESCRIPTION_FR>Tee </DESCRIPTION_FR>

<DESCRIPTION_EN></DESCRIPTION_EN>

Tee shirt manches courtes ras de cou


Short sleeves tee shirt


<COULEUR_FR>Marine</COULEUR_FR>

<COULEUR_EN>Navy blue</COULEUR_EN>

0.2


13


<CODE_SKU>dksjgf</CODE_SKU>

<STOCK_DISPONIBLE>0</STOCK_DISPONIBLE>

<TAILLES>0M</TAILLES>

<ORDRE_AFFICHAGE_TAILLES>1</ORDRE_AFFICHAGE_TAILLES>

521

<REFERENCE_PRODUIT>521</REFERENCE_PRODUIT>

0


<ORDRE_PRODUIT_ACCUEIL>0</ORDRE_PRODUIT_ACCUEIL>

1

1


<Qu1>1</Qu1>




</row>



</root>



La page reçoit les paramètres suivant type h et produit 521



et il comprend rien, il me prend pas la ligne avec cette ref.



P.S. : j'ai mis que une seul ligne mais dans la vrai bdd j'en ai environ 800 (800 row)



Au secours !!!

5 réponses

keliante Messages postés 36 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 13 février 2006
5 janv. 2006 à 17:15
tient voilà la solution cyril :) J'ai trouvé !!! :D



docxml.Load(bdd)

scritere "/root/row[REFERENCE_PRODUIT """ + produit + """]"





Noeuds = docxml.childnodes



For Each Noeud In Noeuds





for each NoeudsEnfants IN Noeud.childnodes

NoeudsEnfants = docxml.selectsinglenode(scritere)

for each Noeudattribut In NoeudsEnfants.childnodes



Select Case Noeudattribut.Name



Case "IMAGE"

Image17.ImageUrl = "images/medium/" + Noeudattribut.InnerText + ".gif"

Case "PRIX_HT"


prix.Text = Noeudattribut.InnerText


Case "DESIGNATION_FR"


titre.Text = Noeudattribut.InnerText


Case "DESCRIPTION_FR"


description.Text = Noeudattribut.InnerText

End Select

Next

Next

merci d'avoir lu mon problème et d'avoir tenté de m'aider .
3
keliante Messages postés 36 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 13 février 2006
5 janv. 2006 à 12:52
et zut j'ai oublié le titre du sujet ppfff je fais que des bétises dsl all
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
5 janv. 2006 à 13:57
Bonjour,

A mon avis c'est la requete XPath qui deconne, j'ai pas l'habitude de faire du XPATH mais essaye plutot quelque chose du genre

//root/row/REFERENCE_PRODUIT/521/parent::*

Je suis pas sur pour selectionner le content du node.

En tout cas je suis interessé par la bonne requete :)


<HR>
Cyril - MVS - MCP ASP
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
5 janv. 2006 à 17:24
Donc la requete Xpath était bone :p je savais pas qu'on pouvait directement faire de la sorte :)

par contre c'est quoi que t'as changé ? le problème était ou ?


<HR>
Cyril - MVS - MCP ASP
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
keliante Messages postés 36 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 13 février 2006
6 janv. 2006 à 11:00
bah en faite il faut réaliser une boucle pour chaque neoud .



comme j'ai root=>row=>puis les attributs me faut 3 boucles (oui car ils considèrent les attributs comme des noeuds .



Et le chemin(Xpath) tu peux l'utiliser que dans la dernière
boucle la ou tu peu x choper le noeud de ta restriction (
[REFERENCE_PRODUIT dans l exemple ci dessus).



Bon je trouve aps mon explication génial je vais en refaire une autre :



dans ma bdd j ai root ==> row (y a plusieurs lignes) => et dans chaque row j'ai 3 attributs.



Donc il faut tout d abord lire root (première boucler et trouver tous
els noeuds enfants mais attention les enfants de root pas de row)
ensuite tu peux descendre d'un cran pour trouver els enfants de row
pour cela il faut faire une autre boucle qui te permet de trouver els
enfants de la row(mais attention ils considèrent les attributs comme
des noeuds)

Ensuite il faut descendre encore d'un cran pour obtenir les valeurs des
attributs donc on refait une boucles pour obtenirs les enfants des
noeuds.



Je sais je suis nul en explication j'espère qu en lisant le code et ce
texte ça suffira à t'éclairer cyril. si je trouve une meilleur
explication je la posterai ici.
0
Rejoignez-nous