I have the following XML structure:
<TabHierarchy>
<Tab Name="Tab1"/>
<TabGroup Name="Group1">
<Tab Name="Tab2"/>
<Tab Name="Tab3"/>
<Tab Name="Tab4"/>
</TabGroup>
<Tab Name="Tab5"/>
<TabGroup Name="Group2">
<Tab Name="Tab6"/>
<TabGroup Name="Group3">
<Tab Name="Tab7"/>
<Tab Name="Tab8"/>
</TabGroup>
<Tab Name="Tab9"/>
</TabGroup>
<Tab Name="Tab10"/>
</TabHierarchy>
My C# classes:
public class XmlTabHierarchy
{
public XmlTabHierarchy()
{
Tab = new List<XmlTab>();
TabGroup = new List<XmlTabGroup>();
TabReport = new List<XmlReportTab>();
}
[XmlElement("Tab")] public List<XmlTab> Tab { get; set; }
[XmlElement("TabGroup")] public List<XmlTabGroup> TabGroup { get; set; }
[XmlElement("ReportTabs")] public List<XmlReportTab> TabReport { get; set; }
}
public class XmlTab
{
[XmlIgnore] public int Order { get; set; }
[XmlIgnore] public string Group { get; set; }
[XmlIgnore] public bool Use { get; set; }
[XmlIgnore] public bool ByUser { get; set; }
[XmlIgnore] public bool KeyTab { get; set; }
[XmlIgnore] public string Tab { get; set; }
[XmlAttribute("Name")] public string TabClean { get; set; }
[XmlAttribute("Alias")] public string Alias { get; set; }
[XmlIgnore] public string Type { get; set; }
[XmlIgnore] public bool Duplicate { get; set; }
}
public class XmlTabGroup
{
public XmlTabGroup()
{
Tab = new List<XmlTab>();
TabGroup = new List<XmlTabGroup>();
}
[XmlIgnore] public int Order { get; set; }
[XmlIgnore] public int GroupId { get; set; }
[XmlAttribute("Name")] public string Group { get; set; }
[XmlAttribute("Alias")] public string Alias { get; set; }
[XmlElement("Tab")] public List<XmlTab> Tab { get; set; }
[XmlElement("TabGroup")] public List<XmlTabGroup> TabGroup { get; set; }
}
The issue I am having is, being able to sort them correctly. As seen in the example XML, Tabs can be between TabGroups. The ReportTabs are always at the end. There is one post here with a similar problem but I don't know how to implement it for my project. Keep sort when deserialize and serialize XML using XmlSerializer