هل تنتشر مساحات الأسماء إلى الأطفال في كائنات XElement؟
-
09-06-2019 - |
سؤال
إذا كان لدي عنصر XElement يحتوي على عناصر فرعية، وإذا قمت بإزالة عنصر فرعي من العنصر الأصلي، وإزالة جميع المراجع بين الاثنين، فهل سيكون لعنصر XElement الفرعي نفس مساحات الأسماء مثل الأصل؟
بمعنى آخر، إذا كان لدي ملف XML التالي:
<parent xmlns:foo="abc">
<foo:child />
</parent>
وقمت بإزالة العنصر الفرعي، هل سيبدو شكل XML الخاص بالعنصر الفرعي
<child xmlns="abc" />
أو مثل
<child />
المحلول
الجواب هو نعم، مساحات الأسماء تنتشر للأطفال.
ليس عليك تحديد مساحة الاسم ضمن العناصر الفرعية.يتضمن نطاق مساحة الاسم جميع العناصر حتى علامة الإغلاق للعنصر الذي تم تعريفه فيه.
انظر القسم رقم 6.1 هنا http://www.w3.org/TR/REC-xml-names/#scoping
امل ان يساعد
نصائح أخرى
إذا قمت بتضمين العنصر المذكور في شجرة XML الجديدة، فسيكون في نفس مساحة الاسم.
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>
لا تنتمي إلى StackOverflow