У меня есть файлы 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-файлы, чтобы объекты меню и использовать их для создания меню. Я хочу использовать 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
Почему вы хотите использовать Linq-to-XML вместо десериализации их напрямую? Удаление десериализации XML в объект кажется намного проще и предпочтительным способом сделать это .... –
вот что я делаю прямо сейчас. Мне просто интересно узнать, как преобразовать рекурсивный xml в коллекцию объектов с помощью LINQ. – raj