Domanda

Se ho un XElement che ha elementi figlio e se rimuovo un elemento figlio dal genitore, rimuovendo tutti i riferimenti tra i due, l'XElement figlio avrà gli stessi spazi dei nomi del genitore?

In altre parole, se ho il seguente XML:

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

e rimuovo l'elemento figlio, sarà simile l'xml dell'elemento figlio

<child xmlns="abc" />

o simili

<child />
È stato utile?

Soluzione

La risposta è sì, gli spazi dei nomi si propagano ai bambini.

NON è necessario specificare lo spazio dei nomi all'interno degli elementi figlio.L'ambito di uno spazio dei nomi include tutti gli elementi fino al tag di chiusura dell'elemento in cui è stato definito.

Vedere la sezione #6.1 qui http://www.w3.org/TR/REC-xml-names/#scoping

Spero possa aiutare

Altri suggerimenti

Se includi l'elemento menzionato nel nuovo albero xml, sarà nello stesso spazio dei nomi.

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());

Risultato:

<a xmlns:foo="abc" />
<a xmlns:boo="efg">
   <b xmlns="abc"></b>
</a>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top