Salut, je feuilletais avec des fichiers xml et j'ai remarqué quelque chose que j'ai un peu de problème de résolution.XElement et XName se bloque quand xml a un espace de nom au noeud racine
J'ai un Xml qui commence par un nœud racine et a alors un autre nœud enfant qui peut changer le nom par exemple:
<root>
<Child1>
</root>
Donc, étant donné que « Enfant1 » peut être changé en « Enfant2 » ou « Child3 "J'ai fait en sorte que ce linq puisse extraire le nom de tout ce qui vient à ma rencontre.
premier:
XElement root = XElement.Parse(xml);
var childType = root.Descendants().First(x => x.Name == "Child1" || x.Name == "Child2"|| x.Name == "Child3").Name;
Alors, quand j'ai mon xml sans un espace de noms, comme indiqué ci-dessus, il workes bien, je parviens à extraire le nom de la balise de noeud.
Mais quand j'ai un espace de noms dans la balise racine il jette une erreur:
<root xmlns="namespace">
<Child1>
</root>
qu'XML en passant par le même LINQ, jette:
Sequence contains no matching element
Il est probablement utile d'expliquer que cela est dû à l'espace de noms en défaut avec 'xmlns = ...' . J'allais le faire, mais je pensais que ce serait * surtout * un duplicata de votre réponse ... –
Cela a fonctionné parfaitement et était exactement la réponse que je cherchais, merci. – John