У меня есть эти классы:
public class WikiEntry
{
public string Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
[XmlArray]
public List<Category> Categories { get; set; }
}
public class Category
{
[XmlAttribute]
public string Id { get; set; }
[XmlAttribute]
public string Text { get; set; }
}
В начале у меня есть такая структура XML:
<Wiki>
<Categories></Categories>
<Tags></Tags>
<WikiEntries></WikiEntries>
</Wiki>
И я сериализую wiki.Categories
и добавляю его в существующий XML следующим образом:
var xDoc = XDocument.Load("Data.xml");
WikiEntry wiki = new WikiEntry
{
Id = Guid.NewGuid().ToString(),
Title = "Simple title",
Content = "Simple content here",
Categories = new List<Category>
{
new Category
{
Id = Guid.NewGuid().ToString(),
Text = "CATEGORYA"
},
new Category
{
Id = Guid.NewGuid().ToString(),
Text = "CATEGORYB"
}
}
};
var categories = xDoc.Root.Element("Categories");
var categoriesBuilder = new StringBuilder();
using (var writer = XmlWriter.Create(categoriesBuilder, new XmlWriterSettings { Indent = true, ConformanceLevel = ConformanceLevel.Auto, OmitXmlDeclaration = true }))
{
var ns = new XmlSerializerNamespaces();
ns.Add("", "");
var xs = new XmlSerializer(typeof(List<Category>), "");
xs.Serialize(writer, wiki.Categories, ns);
}
categories.Add(XElement.Parse(categoriesBuilder.ToString().Trim()));
xDoc.Save(file);
Проблема в том, что когда я получаю это:
<Categories>
<ArrayOfCategory>
<Category Id="482ce9f6-5d4c-48f9-b84f-33c3cf9b0b0f" Text="CATEGORYA" />
<Category Id="73e6c671-fb6d-40a4-8694-1d5dbcf381d5" Text="CATEGORYB" />
</ArrayOfCategory>
<ArrayOfCategory>
<Category Id="3c0f2a15-4623-4f33-b356-75e8c8b89624" Text="CATEGORYA" />
<Category Id="d8720ca9-06f5-401d-90e2-c7f43e1c91f5" Text="CATEGORYB" />
</ArrayOfCategory>
Итак, мой вопрос: как я могу сериализовать свой класс Category, чтобы я получил это (без указания <ArrayOfCategory>
parent):
<Categories>
<Category Id="482ce9f6-5d4c-48f9-b84f-33c3cf9b0b0f" Text="CATEGORYA" />
<Category Id="73e6c671-fb6d-40a4-8694-1d5dbcf381d5" Text="CATEGORYB" />
<Category Id="3c0f2a15-4623-4f33-b356-75e8c8b89624" Text="CATEGORYA" />
<Category Id="d8720ca9-06f5-401d-90e2-c7f43e1c91f5" Text="CATEGORYB" />
</Categories>
Примечание: я хочу удалить его , а не переименовать его.