Lire fichier xml [Résolu]

Signaler
-
 thefolin -
Bonjour a tout le monde

Mon probleme est le suivant : Lire un fichier XML.
J'ai un soucie de lecture que j'ai réussis a régler a moitie.Je m'explique dans mon xml j'ai du enlever une ligne pour ce que mon code lise mon xml voici la ligne que j'ai enlevé :
<ME610101 xmlns="http://www.darva.com/messages/auto/dem/" version="3.0" >

J'ai remplacée par
<ME610101>


Le probleme vient du
xmlns="http://www.darva.com/messages/auto/dem/" version="3.0"

Mon bout de code ne veut pas lire cette balise et s’arrête. Du coup mon xml n'est pas lue

Je doit garder cette ligne
<ME610101 xmlns="http://www.darva.com/messages/auto/dem/" version="3.0" >



Ici le code qui fonctionne parfaitement avec le XML ci-dessous

string path = @"..\\..\\text.xml";
            XDocument doc = XDocument.Load(path);

            var feeds = from feed in doc.Element("ME610101").Descendants("SE0010201")
                        select feed.Element("DE00380101").Value + feed.Element("DE00390101").Value;

            foreach (string chaine in feeds)
            {
                Console.WriteLine(chaine);
            }

Voici le fichier XML sans le
<ME610101 xmlns="http://www.darva.com/messages/auto/dem/" version="3.0" >


<?xml version="1.0" encoding="UTF-8"?>
<ME610101 >
 <SE0010201>
  <DE00380101>T79000012631</DE00380101>
  <DE00390101>D31000025246</DE00390101>
  <DE00440101>XXX</DE00440101>
</ME610101 >


Une idée ou des piste de solution.

Merci d'avance de votre contribution dans ce probleme.

1 réponse

Je m'excuse d'avoir poser la question j'ai trouver la solution.

Mon problème était tout simple ><. Je ne spécifiais pas le namespace.

Voici le code finit :

string path = @"..\\..\\text.xml"; // Emplacement du fichier xml
            XDocument doc = XDocument.Load(path); // chargement du fichier xml
            XNamespace xmlns = "http://www.darva.com/messages/auto/dem/"; // On spcécifie le namespace

            // Varible qui contient ma requete SELECT on commence par le début du xml avec doc.Element(xmlns+"ME610101") 
            var feeds = from feed in doc.Element(xmlns+"ME610101").Descendants(xmlns+"SE0010201")
                        select feed.Element(xmlns + "DE00380101").Value + feed.Element(xmlns + "DE00390101").Value;

            foreach (string chaine in feeds)
            {
                Console.WriteLine(chaine); // Ici pour voir les données que l'on recup 
            }


Voila il faut simplement utiliser
 XNamespace xmlns ="" // mettre ton namespace