由於XML文檔:處理XML Linq中(C#):計數後代/元素和檢查計數值= X
<Root xmlns="http://foo" xmlns:bar="http://bar">
<Child Name="one" bar:Type="type1" />
<Child Name="two" bar:Caption="captionvalue" />
</Root>
什麼是最有效的方式做到使用的XElement根(具有以下元根):
- 確保只有兩個子元素後裔
- 對於每個子元素的每個屬性,如果命名空間是http://bar然後調用BarFunction(attribute.value)否則打電話NoBarFunction(attribute.val如果我需要根據它們的名稱不同地處理Child的每個屬性(例如:用值填充一組變量)是foreach(Attribute)塊內的一個if-else on Attribute.Name的唯一選項?
上午我在假設不具備的「http://欄」該屬性正確的命名空間實際上是在一些默認的命名空間(而不是在http://foo)不像誰繼承父的命名空間如果沒有的元素合格?
我:
IEnumerable<XElement> children = root.Elements("Child");
// How do I test the count? And get each Child
foreach (XAttribute attribute in child.Attributes())
{
if (attribute.Name.Namespace.ToString() == "http://bar")
{
BarFunction(attribute.Value);
}
else //Default Namespace
{
NoBarFunction(attribute.Value);
}
}
沒有名稱空間前綴的屬性被認爲不屬於任何名稱空間。如果有幫助,我認爲它是「全球無名命名空間」。所以你是對的。 ' '不在'http:// foo'的根名稱空間中。 –
Lisa
2011-04-28 01:12:15