如何序列化列表?
How do I serialize a list?
我是 XmlSerializer
的新手,我有一个 List<T>
我想像这样序列化:
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<itens>
<Item corret="0" order="�)">
foo
</Item>
<Item corret="1" order=")">
baa
</Item>
</itens>
</ArrayOfItem>
而不是这个(当前输出):
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Item corret="0" order="�)">
<test>foo</test>
</Item>
<Item corret="1" order=")">
<test>baa</test>
</Item>
</ArrayOfItem>
即删除 test
标签,将其内容移动到 item
并将列表中的所有 item
放在 itens
标签内。我该怎么做?
class:
[Serializable]
public class Item
{
[XmlIgnore]
public int correctIndex { get; set; }
[XmlIgnore]
public int index { get; set; }
[XmlAttribute("corret")]
public string IsCorrect
{
get { return correctIndex == index ? "1" : "0"; }
set { }
}
[XmlAttribute("order")]
public string Order
{
get { return string.Format("{0})", ((char)index).ToString()); }
set { }
}
[XmlElement("test")]
public string text { get; set; }
}
我正在使用这个序列化:
new XmlSerializer(typeof(List<Item>)).Serialize(Console.Out, list);
您需要另一个 class,属性 键入 List<Item>
:
[Serializable]
public class Items
{
[XmlArray("itens")]
public List<Item> itens { get; set; }
}
和序列化代码:
var list = new Items() { itens = new List<Item>() { new Item() { correctIndex = 10, index = 11, text = "asdasd" } } };
new XmlSerializer(typeof(Items)).Serialize(Console.Out, list);
要将 text
属性 序列化为 Items
元素而不是子 text
元素的内容,将 [XmlElement("text")]
替换为 [XmlText]
:
[XmlText]
public string text { get; set; }
我是 XmlSerializer
的新手,我有一个 List<T>
我想像这样序列化:
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<itens>
<Item corret="0" order="�)">
foo
</Item>
<Item corret="1" order=")">
baa
</Item>
</itens>
</ArrayOfItem>
而不是这个(当前输出):
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Item corret="0" order="�)">
<test>foo</test>
</Item>
<Item corret="1" order=")">
<test>baa</test>
</Item>
</ArrayOfItem>
即删除 test
标签,将其内容移动到 item
并将列表中的所有 item
放在 itens
标签内。我该怎么做?
class:
[Serializable]
public class Item
{
[XmlIgnore]
public int correctIndex { get; set; }
[XmlIgnore]
public int index { get; set; }
[XmlAttribute("corret")]
public string IsCorrect
{
get { return correctIndex == index ? "1" : "0"; }
set { }
}
[XmlAttribute("order")]
public string Order
{
get { return string.Format("{0})", ((char)index).ToString()); }
set { }
}
[XmlElement("test")]
public string text { get; set; }
}
我正在使用这个序列化:
new XmlSerializer(typeof(List<Item>)).Serialize(Console.Out, list);
您需要另一个 class,属性 键入 List<Item>
:
[Serializable]
public class Items
{
[XmlArray("itens")]
public List<Item> itens { get; set; }
}
和序列化代码:
var list = new Items() { itens = new List<Item>() { new Item() { correctIndex = 10, index = 11, text = "asdasd" } } };
new XmlSerializer(typeof(Items)).Serialize(Console.Out, list);
要将 text
属性 序列化为 Items
元素而不是子 text
元素的内容,将 [XmlElement("text")]
替换为 [XmlText]
:
[XmlText]
public string text { get; set; }