Я десериализирую следующий Category
XML, содержащий Item
дочерние элементы, а также Item_Group
элементы, содержащие Item
элементы.
Проблема в том, что я получаю список предметов в Category
и отдельный список предметов в каждой группе предметов.Поэтому мне нужно добавить некоторые идентификаторы, чтобы при сериализации XML можно было сохранять порядок элементов Item
и Item_Group
в XML.
XML
<Category Label="CategoryOne" Type="CategoryType">
<Item Label="Item1" Type="ItemTypeA" Amount="0.00" />
<Item Label="Item2" Type="ItemTypeB" Amount="0.00" />
<Item Label="Item3" Type="ItemTypeA" Amount="0.00" />
<Item_Group Label="ItemGroupOne" Type="ItemGroupType">
<Item Label="Item4" Type="ItemTypeC" Amount="0.00" />
<Item Label="Item5" Type="ItemTypeA" Amount="0.00" />
<Item Label="Item6" Type="ItemTypeB" Amount="0.00" />
</Item_Group>
<Item Label="Item7" Type="ItemTypeB" Amount="0.00" />
<Item Label="Item8" Type="ItemTypeA" Amount="0.00" />
</Category>
Есть ли что-то, что я могу добавить к следующему прокси-серверу cs для достижения этого?
CS-прокси для десериализации XML
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.example.com")]
public partial class ABCCategory
{
private ABCCategoryItem[] itemField;
private ABCCategoryItemGroup[] itemGroupField;
private string labelField;
private string typeField;
[System.Xml.Serialization.XmlElementAttribute("Item")]
public ABCCategoryItem[] Item
{
get
{
return this.itemField;
}
set
{
this.itemField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute("Item_Group")]
public ABCCategoryItemGroup[] Item_Group
{
get
{
return this.itemGroupField;
}
set
{
this.itemGroupField = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Label
{
get
{
return this.labelField;
}
set
{
this.labelField = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Type
{
get
{
return this.typeField;
}
set
{
this.typeField = value;
}
}
}
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.bonafidee.com")]
public partial class ABCCategoryItemGroup
{
private ABCCategoryItem[] itemField;
private string labelField;
private string typeField;
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Label
{
get
{
return this.labelField;
}
set
{
this.labelField = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Type
{
get
{
return this.typeField;
}
set
{
this.typeField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute("Item")]
public ABCCategoryItem[] Item
{
get
{
return this.itemField;
}
set
{
this.itemField = value;
}
}
}
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.bonafidee.com")]
public partial class ABCCategoryItem
{
private string labelField;
private string typeField;
private string amountField;
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Label
{
get
{
return this.labelField;
}
set
{
this.labelField = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Type
{
get
{
return this.typeField;
}
set
{
this.typeField = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Amount
{
get
{
return this.amountField;
}
set
{
this.amountField = value;
}
}
}
РЕДАКТИРОВАТЬ
В соответствии с запросом ниже приведены модели CS, которые заполняются через сообщение http из представления.Затем CategoryModel
необходимо сериализовать.
cs Модели
using System.Collections.Generic;
namespace Company.Models
{
public class CategoryModel
{
public string Label { get; set; }
public string Type { get; set; }
public List<ItemGroupModel> ItemGroups { get; set; }
public List<ItemModel> Items { get; set; }
}
}
using System.Collections.Generic;
namespace Company.Models
{
public class ItemGroupModel
{
public string Label { get; set; }
public string Type { get; set; }
public List<ItemModel> Items { get; set; }
}
}
namespace Company.Models
{
public class ItemModel
{
public string Label { get; set; }
public string Type { get; set; }
public string Amount { get; set; }
}
}