我需要使用XDocument
加載xml的幫助。 xml保存WPF中HierarchicalDataTemplate
的數據,因此每個元素都具有相同的屬性。使用XDocument加載重複的XML屬性
我有一個新手問題,如何處理重複的屬性名稱,圖像和fileLoc。
我試圖得到像下面的代碼工作,但正如你可以看到重複的屬性將無法正常工作。
public static List<MenuItem> Load(string MyMenuFile)
{
var mymenu = XDocument.Load(MyMenuFile).Root.Elements("Menu").Select(
x => new MenuItem(
(string)x.Attribute("id"),
(string)x.Attribute("name"),
(string)x.Attribute("image"),
(string)x.Attribute("fileLoc"),
(string)x.Element("itemlist"),
(string)x.Attribute("name"),
(string)x.Attribute("image"),
(string)x.Attribute("fileLoc"),
(string)x.Element("item"),
(string)x.Attribute("name"),
(string)x.Attribute("image"),
(string)x.Attribute("fileLoc")));
return stationfiles.ToList();
}
這裏是XML:
<Menus>
<Menu id="1" Name="Level1" image="C:\lvl1.jpg" fileLoc="C:\lvl1.xml">
</Menu>
<Menu id="2" Name="Level2" image="C:\lvl2.jpg" >
<itemlist Name="Level2" image="C:\lvl2.jpg" fileLoc="C:\lvl2.xml">
</itemlist>
<itemlist Name="Level3" image="C:\lvl3.jpg">
<item Name="First" image="C:\first.jpg" fileLoc="C:\first.xml"></item>
<item Name="Second" image="C:\second.jpg" fileLoc="C:\second.xml"></item>
<item Name="Third" image="C:\third.jpg" fileLoc="C:\third.xml"></item>
</itemlist>
</Menu>
</Menus>
正如你所看到的,不同的元素,但複製的屬性。我應該有3個不同的課程,但我怎樣才能將它們合併爲XDocument
加載?任何幫助都會很棒。
我是在我的理解是否正確,這兩個'
我明白你的意思,根是菜單,下一個元素是帶有屬性的菜單,接下來將是帶有屬性的itemlist(可選),下一個將帶有屬性的項目(也是可選的)在上面的xml中,Menu id = 1沒有itemlist或項目,菜單id = 2有兩個項目表,但只有第二個項目。一個物品清單隻有屬性和物品。 – 2011-12-22 20:39:26