我有以下xml文件來生成我們網站的菜單。如何使用LINQ將xml文件轉換爲對象
<xs:element name="Menu">
<xs:complexType>
<xs:sequence>
<xs:element name="MenuItem" type="MenuItemType" maxOccurs="unbounded"></xs:element>
</xs:sequence>
<xs:attribute name="Title" type="xs:string"></xs:attribute>
<xs:attribute name="Type" type="xs:string"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:complexType name="MenuItemType">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="MenuItem" type="MenuItemType" />
</xs:choice>
<xs:attribute name="Text" type="xs:string"></xs:attribute>
<xs:attribute name="Url" type="xs:string"></xs:attribute>
</xs:complexType>
現在我正在使用xmlserializer將這些xml文件轉換爲Menu對象並使用它們來生成菜單。我想使用LINQ to xml將這些xml文件轉換爲相同的對象。任何幫助將不勝感激。上面的xml文件生成類是
public partial class Menu {
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("MenuItem")]
public MenuItemType[] MenuItem;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Title;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Type;
}
public partial class MenuItemType {
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("MenuItem")]
public MenuItemType[] Items;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Text;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Url;
}
這將是更容易,如果我們能看到實際的XML的菜單,而不是對同一模式定義。 – Murph 2009-11-14 12:20:20
爲什麼要使用Linq-to-XML而不是直接反序列化它們?將XML反序列化爲對象看起來好像是更容易和更好的方式來做到這一點.... – 2009-11-14 13:11:15
這就是我現在正在做的事情。我只是有興趣知道如何將遞歸XML轉換爲使用LINQ的對象集合。 – raj 2009-11-14 14:43:07