Frage

Wenn ich ein XElement habe, das untergeordnete Elemente hat, und wenn ich ein untergeordnetes Element vom übergeordneten Element entferne und alle Referenzen zwischen den beiden entferne, hat das untergeordnete XElement dann dieselben Namespaces wie das übergeordnete Element?

Mit anderen Worten, wenn ich das folgende XML habe:

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

und ich das untergeordnete Element entferne, wird die XML-Datei des untergeordneten Elements aussehen?

<child xmlns="abc" />

oder so

<child />
War es hilfreich?

Lösung

Die Antwort lautet: Ja, Namespaces werden an untergeordnete Elemente weitergegeben.

Sie müssen den Namespace NICHT innerhalb untergeordneter Elemente angeben.Der Geltungsbereich eines Namespace umfasst alle Elemente bis zum schließenden Tag des Elements, in dem er definiert wurde.

Siehe Abschnitt Nr. 6.1 hier http://www.w3.org/TR/REC-xml-names/#scoping

Ich hoffe, das hilft

Andere Tipps

Wenn Sie das erwähnte Element in den neuen XML-Baum aufnehmen, befindet es sich im selben Namespace.

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

Ergebnis:

<a xmlns:foo="abc" />
<a xmlns:boo="efg">
   <b xmlns="abc"></b>
</a>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top