Parsing xml
duxitto
Messages postés
247
Date d'inscription
Statut
Membre
Dernière intervention
-
duxitto Messages postés 247 Date d'inscription Statut Membre Dernière intervention -
duxitto Messages postés 247 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je dispose d'un fichier xml dont la structure est la suivante
je souhaiterai extraire a chaque résultat , les données contenues, je ne sais pas comment m'y prendre.
Merci de votre aide
je dispose d'un fichier xml dont la structure est la suivante
<analyses>
<resultat>
<dossier>
<num>*****</num>
<id>*******</id>
</dossier>
<medecin>
<nom>****</nom>
<prenom>***</prenom>
</medecin>
<resultat>
<resultat>
<dossier>
<num>*****</num>
<id>*******</id>
</dossier>
<medecin>
<nom>****</nom>
<prenom>***</prenom>
</medecin>
<resultat>
.
.
.
</analyses>
je souhaiterai extraire a chaque résultat , les données contenues, je ne sais pas comment m'y prendre.
Merci de votre aide
Configuration: Windows XP Firefox 3.5.6
11 réponses
-
-
Je suis en asp.net avec C#
-
Salut,
en C#, tu pourrais avoir un truc du style:
XmlDocument xml=new XmlDocument ();
xml.Load(path_vers_ton_fichier_xml);
XmlNodeList nodelist=xml.GetElementsByTagName("resultat");
foreach( XmlNode node in nodelist)
{
//traitement des données
}
J'espere ca pourra t'aider!!
@+ -
Merci pour ta réponse, en effet cela m'aide, tu aurais pas une idée sur la suite du traitement ?
Merci -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Je viens de me rendre compte que c'est exactement ce que j'ai fais mais que j'ai oublié de mettre ce bout de code :)
-
Salut,
tu peux t'inspirer de cela:private void bl() { XmlDocument xml=new XmlDocument (); xml.Load("c:\\Temp\\test.xml"); XmlNodeList nodelist=xml.GetElementsByTagName("resultat"); foreach( XmlNode node in nodelist) { foreach (XmlNode nod in node.ChildNodes) { if (nod.Name == "dossier") { foreach (XmlNode no in nod.ChildNodes) { richTextBox1.AppendText(nod.Name + " " + no.Name + " " + no.InnerXml+"\n"); } } if (nod.Name == "medecin") { foreach (XmlNode no in nod.ChildNodes) { richTextBox1.AppendText(nod.ParentNode.Name + " " + nod.Name + " " + no.Name + " " + no.InnerXml+"\n"); } } } } }
Mais cela devient vite complexe si ton noeud parent a trop de profondeur!!!
Le plus simple est un truc du type:
<analyses>
<resultat num=*** id=**** medecin="chuka chups"/>
<resultat num=*** id=**** medecin="tit chups"/>
<resultat num=*** id=**** medecin="Tat chups"/>
</analyses>
apres pour le parser:
XmlDocument xml=new XmlDocument ();
xml.Load(path_vers_ton_fichier_xml);
XmlNodeList nodelist=xml.GetElementsByTagName("resultat");
string result="";
foreach( XmlNode node in nodelist)
{
result=nod.Attributes["num"].value+" "+nod.Attributes["id"].value+" "+nod.Attributes["medecin"].value;
//traitement des données
}
@+
-
Merci pour ta réponse. Je dois vérifier si le médecin existe dans la bd ou non , pour cela je suis arrivé à ce stade , il me reste plus qu'a faire ma requête pour voir si il existe ou non. (j'ai changé l'élément médecin par patient)
XmlDocument doc = new XmlDocument(); doc.Load(Server.MapPath("~/App_Data/version1.0.xml")); XmlNodeList nodes = doc.DocumentElement.GetElementsByTagName("patient"); foreach (XmlNode node in nodes) { foreach (XmlNode noeudenf in node) { if (noeudenf.Name.Equals ("id_patient")) { // c'est ici que je dois faire ma requête sur la base ASPNETDB (sur la table User car le id_patient est le username dans cette table) si il existe , je dois supprimer ce nœud de mon fichier XML } } } -
Pour la requete je te laisse voir...
apres pour supprimer le noeudArrayList ar = new ArrayList(10); XmlDocument doc = new XmlDocument(); doc.Load(Server.MapPath("~/App_Data/version1.0.xml")); XmlNodeList nodes = doc.DocumentElement.GetElementsByTagName("patient"); foreach (XmlNode node in nodes) { foreach (XmlNode noeudenf in node) { if (noeudenf.Name.Equals ("id_patient")) { // c'est ici que je dois faire ma requête sur la base ASPNETDB (sur la table User car le id_patient est le username dans cette table) si il existe , je dois supprimer ce nœud de mon fichier XML //pour la requete je te laisse faire avec le connecteur qui va bien..je le connait pas.. if (Bon_Resultat) ar.Add(node) } } } for (int i=0;i<ar.Count;i++) xml.DocumentElement.RemoveChild(ar[i] as XmlNode); xml.Save("~/App_Data/version1.0.xml");
-
-
-
Merci pour ta réponse.