استرداد السمات من XML
-
21-09-2019 - |
سؤال
لماذا تشغيل هذا الرمز ...
XmlDocument doc = new XmlDocument();
string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
<BaaBaa>
<BlackSheep HaveYouAny=""Wool"" />
</BaaBaa>";
doc.LoadXml(xml);
XmlNodeList nodes = doc.SelectNodes("//BaaBaa");
foreach (XmlElement element in nodes)
{
Console.WriteLine(element.InnerXml);
XmlAttributeCollection attributes = element.Attributes;
Console.WriteLine(attributes.Count);
}
إنتاج الإخراج التالي في موجه الأوامر؟
<BlackSheep HaveYouAny="Wool" />
0
وهذا لا ينبغي attributes.Count
العودة 1؟
المحلول
عندما تتصل SelectNodes
مع "// baabaa" يعيد جميع عناصر "baabaa".
كما ترون من وثيقتك الخاصة ، لا يوجد لدى Baabaa سمات ، إنه العنصر "Blacksheep" الذي يحتوي على السمة الفردية "Hasouany".
إذا كنت ترغب في الحصول على عدد السمات لعناصر الأطفال ، فيجب عليك التنقل إلى ذلك من العقدة التي تتواصل فيها عند التكرار من خلال العقد.
نصائح أخرى
element.Attributes
يحتوي على سمات العنصر نفسه ، وليس أطفاله.
منذ BaaBaa
العنصر ليس لديه أي سمات ، فهو فارغ.
ال InnerXml
تقوم الخاصية بإرجاع XML لمحتويات العنصر ، وليس للعنصر نفسه. لذلك ، لديها سمة.
<BlackSheep HaveYouAny=""Wool"" /> // innerXml that includes children
<BaaBaa> // is the only node Loaded, which has '0' attributes
المحلول
XmlAttributeCollection attributes = element.FirstChild.Attributes;
سوف ينتج ما يلي ، مخرجات مطلوبة
<BlackSheep HaveYouAny="Wool" />
1
لا تنتمي إلى StackOverflow