Question

Si j'ai un XElement qui a des éléments d'enfant, et si je supprime un élément enfant de la mère, en supprimant toutes les références entre les deux, l'enfant XElement ont les mêmes espaces de noms en tant que parent?

En d'autres mots, si j'ai le code XML suivant:

<parent xmlns:foo="abc">
    <foo:child />
</parent>

et je supprime l'élément enfant, l'enfant de l'élément xml ressemble

<child xmlns="abc" />

ou comme

<child />
Était-ce utile?

La solution

La réponse est oui, les espaces de noms ne se propagent aux enfants.

Vous n'avez PAS à spécifier l'espace de noms dans les éléments enfants.La portée d'un espace de noms comprend tous les éléments jusqu'à ce que la balise de fermeture de l'élément il a été défini.

Voir la section #6.1 ici http://www.w3.org/TR/REC-xml-names/#scoping

espère que ça aide

Autres conseils

Si vous incluez élément mentionné dans la nouvelle arborescence xml, il sera dans le même espace de noms.

var xml1 = XElement.Parse("<a xmlns:foo=\"abc\"><foo:b></foo:b></a>");
var xml2 = XElement.Parse("<a xmlns:boo=\"efg\"></a>");
XNamespace ns = "abc";
var elem = xml1.Element(ns + "b");
elem.Remove();
xml2.Add(elem);
Console.WriteLine(xml1.ToString());
Console.WriteLine(xml2.ToString());

Résultat:

<a xmlns:foo="abc" />
<a xmlns:boo="efg">
   <b xmlns="abc"></b>
</a>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top