Recuperer la valeur de balises XML [Résolu]

damsdu64 49 Messages postés lundi 4 décembre 2000Date d'inscription 29 avril 2009 Dernière intervention - 4 avril 2009 à 21:31 - Dernière réponse : damsdu64 49 Messages postés lundi 4 décembre 2000Date d'inscription 29 avril 2009 Dernière intervention
- 5 avril 2009 à 23:15
Bonjour a tous,

Je possède un fichier XML qui est de cette forme la :

<style><![CDATA[ODY{font:x-small 'Verdana';margin-right:1.5em}
.c{cursor:hand}
.b{color:red;font-family:'Courier New';font-weight:bold;text-decoration:none}
.e{margin-left:1em;text-indent:-1em;margin-right:1em}
.k{margin-left:1em;text-indent:-1em;margin-right:1em}
.t{color:#990000}
.xt{color:#990099}
.ns{color:red}
.dt{color:green}
.m{color:blue}
.tx{font-weight:bold}
.db{text-indent:0px;margin-left:1em;margin-top:0px;margin-bottom:0px;padding-left:.3em;border-left:1px solid #CCCCCC;font:small Courier}
.di{font:small Courier}
.d{color:blue}
.pi{color:blue}
.cb{text-indent:0px;margin-left:1em;margin-top:0px;margin-bottom:0px;padding-left:.3em;font:small Courier;color:#888888}
.ci{font:small Courier;color:#888888}
PRE{margin:0px;display:inline}]]></style>
<?xml version="1.0" encoding="UTF-8"
?>

[# -]<SuiviAvion>

[# -]<Vol>

 <Date_Vol>3345</Date_Vol>

 <Heure_Trajet>3345</Heure_Trajet>

 <Acceleration_Min>3345</Acceleration_Min>

 <Acceleration_Max>10</Acceleration_Max>

 <Duree_Trajet>3345</Duree_Trajet>

 <Total_Accelerations>10</Total_Accelerations>

 </Vol>

[# -]<Vol>

 <Date_Vol>3345</Date_Vol>

 <Heure_Trajet>3345</Heure_Trajet>

 <Acceleration_Min>3345</Acceleration_Min>

 <Acceleration_Max>20</Acceleration_Max>

 <Duree_Trajet>3345</Duree_Trajet>

 <Total_Accelerations>30</Total_Accelerations>

 </Vol>

[infomsg.aspx?ajout=1# -]<Vol>

 <Date_Vol>3345</Date_Vol>

 <Heure_Trajet>3345</Heure_Trajet>

 <Acceleration_Min>3345</Acceleration_Min>

 <Acceleration_Max>15</Acceleration_Max>

 <Duree_Trajet>3345</Duree_Trajet>

 <Total_Accelerations>45</Total_Accelerations>

 </Vol>

Mon objectif serais de récupérer la valeur de la première balise Acceleration_Max pour l'affecter a la valeur de la balise Total_Accelerations et ensuite de récupérer la valeur de la deuxième balise Acceleration_Max pour l'additionner à la valeur de la balise d'avant et affecter le résultat de cette somme a la nouvelle balise Total_Accelerations et ainsi dessuite....

Pour ilustrer ceci on peur voir dans l'exemple d'en haut la premiere balise Acceleration_Max est égale a 10 donc par conséquent la valeur de la première balise Total_Accelerations sera 10

Ensuite la valeur de la deuxieme balise Acceleration_Max est 20 donc 10 + 20 = 30 donc 30 sera la valeur de la deuxième balise Total_Accelerations et ainsi dessuite ..

J'attend votre aide parcque pour l'instant je ne vois pas du tout quoi faire pour l'instant je sais qu'il faut faire ça pour ouvrir le fichier XML existant :

XmlDocument xml = new XmlDocument();
                xml.Load(CheminFichierXML);

//J'ai essayer d'incorporer cette fonction afin de récupérer la valeur de la balise Acceleration_Max mais sa ne marche pas
                XmlElement AccMax = xml.GetElementById("Accelerations_Max");

                xml.Save(CheminFichierXML);

Donc c'est avec plaisir que j'attend vos proposition et votre aide je vous remercie infiniment d'avance.
Afficher la suite 

5 réponses

Répondre au sujet
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 5 avril 2009 à 11:57
+3
Utile
Salut,

-Avec framwork 1.x - 2..x, jette un oeil sur ce tuto:
http://www.csharpfr.com/tutorial.aspx?ID=536

Par exemple:

XmlDocument xDoc =
new
XmlDocument();
xDoc.Load(
"test.xml");

XmlNode x1 = xDoc.SelectSingleNode(
"SuiviAvion/Vol/Acceleration_Max");

XmlNodeList x2 = xDoc.SelectNodes(
"SuiviAvion/Vol/Acceleration_Max");

- Avec framework 3.x, regarde du côté de LinqToXml:
http://msdn.microsoft.com/fr-fr/library/system.xml.linq.xdocument.aspx

Par exemple:
XElement

x =
XDocument.Load(
"test.xml").Element(
"SuiviAvion").Element(
"Vol").Element(
"Acceleration_Max");

<hr />
-Blog-
-Site Perso-
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Bidou
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 5 avril 2009 à 23:08
+3
Utile
Bonsoir,
Tu as donc choisi la méthode XPath.

1) Pour itérer à travers les différents éléments, tu peux faire ceci:

XmlDocument xDoc =
new
XmlDocument();
xDoc.Load(
"test.xml");

foreach (
XmlNode node
in xDoc.SelectNodes(
"SuiviAvion/Vol/Acceleration_Max"))
{
  
Console.WriteLine(node.InnerText);
}

2) Pour récupérer la somme de tous les noeuds tu peux faire comme ceci:

XPathDocument xPathDoc =
new
XPathDocument(
"test.xml");

XPathNavigator xPathNav = xPathDoc.CreateNavigator();

object o = xPathNav.Evaluate(
"sum(*/Vol/Acceleration_Max)");

<hr />
-Blog-
-Site Perso-
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Bidou
damsdu64 49 Messages postés lundi 4 décembre 2000Date d'inscription 29 avril 2009 Dernière intervention - 5 avril 2009 à 11:58
0
Utile
Bonjour,
Merci pour ta réponse je vais essayer tout ça et je te tiens au courant.
Bonne fin de journée =)
Commenter la réponse de damsdu64
damsdu64 49 Messages postés lundi 4 décembre 2000Date d'inscription 29 avril 2009 Dernière intervention - 5 avril 2009 à 20:12
0
Utile
Bonjour,

Alors j'ai plusieurs questions :

1) A l'aide du débuggeur de Visual j'ai pu observer ce que contenait x2 dans ce bout de code que tu ma conseillé:

XmlNodeList x2 = xDoc.SelectNodes(
"SuiviAvion/Vol/Acceleration_Max");

Le truc c'est que j'ai effectivement vu que j'avais sous forme de tableau les différentes valeurs de la valeur de mes balises Acceleration_Max (du genre tab[0] = 10, tab[1] = 20...) mais je ne comprend pas comment je peut les récupérer et les exploiter pour récupérer la valeur que je veux sous forme de string.

2) J'ai lu le très bon tuto sur le XPATH mais il y a quelques points que je ne comprend pas par exemple en mettant ce bout de code je penser pouvoir obtenir quelque chose et je n'arrive à rien :

XPathDocument xPathDoc = new XPathDocument(CheminFichierXML);
                XPathNavigator xPathNav = xPathDoc.CreateNavigator();
string ValeurMax = "sum(SuiviAvion/Vol/Acceleration_Max/*/@code)"

Après j'ai essayer de recuperer la valeur de l'attribut en faisant :
string x = xPathNav.GetAttribute("Acceleration_Max", "Vol");

Aucun résultat n'est concluant, après peut etre que je ne comprends pas certaines choses comment insérer des requetes ou quoi mais comme je suis débutant mais vision reste tout de meme un peut floue

Après mon objectif reste de récupérer les valeur des balises Accelerations_Max mais dans l'ordre tout de meme c'est a dire tant que il y en a je recupere dans un string.

Ca serait gentil ci tu pourrait m'éclairer un petit peut plus sur ça je te remercie par avance.
Commenter la réponse de damsdu64
damsdu64 49 Messages postés lundi 4 décembre 2000Date d'inscription 29 avril 2009 Dernière intervention - 5 avril 2009 à 23:15
0
Utile
Bonsoir,
Merci beaucoup pour ton aide et surtout pour tes explications grâce a toi je connais plus de choses notamment le XPath.
Commenter la réponse de damsdu64

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.