J'ai expérimenté LINQ to XML aujourd'hui, mais je n'ai pas eu beaucoup de succès. Lorsque j'utilise un espace de noms, je n'obtiens aucune donnée.
Voici le xml (simplifié) :
<?xml version="1.0" encoding="UTF-8" ?>
<Message xmlns="urn:protocols:format13">
<data>
testdata
</data>
</Message>
J'essaie d'obtenir les données avec (xmlmsg est une chaîne) :
XElement root = XElement.Parse(xmlmsg);
XNamespace ns = root.Attribute("xmlns").ToString();
List<XElement> datalist =
(from desc in root.Descendants(ns + "data")
select desc).ToList<XElement>();
Mais la liste de données reste vide. Si je n'utilise pas d'espace de noms, cela fonctionne.
J'utilisais auparavant XmlReader, qui fonctionnait bien avec les espaces de noms. Mais comme mes données xml deviennent un peu complexes à analyser, j'ai voulu utiliser LINQ.
Des indices ?