2008-09-05 6 views
2

子要素を持つXElementを持っていて、子要素を親から削除して、その間のすべての参照を削除すると、子XElementは親と同じ名前空間を持ちますか?私は、次のXMLがある場合つまり名前空間はXElementオブジェクト内の子に伝播されますか?

、:

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

を、私は子要素を削除し、子要素のXMLは

<child xmlns="abc" /> 

または

<child /> 
などのようになります。

答えて

1

答えははいです。名前空間は子に伝播します。

子要素内に名前空間を指定する必要はありません。名前空間のスコープは、それが中で定義された要素の終了タグまでのすべての要素を含んでいる。

を参照してくださいセクション#6.1は、新しいXMLの要素を言及が含まれている場合

1

を助けここhttp://www.w3.org/TR/REC-xml-names/#scoping

希望それは同じ名前空間にあります。

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

結果:

<a xmlns:foo="abc" /> 
<a xmlns:boo="efg"> 
    <b xmlns="abc"></b> 
</a> 
関連する問題