c# - 如何序列化列表?

标签 c# xml xml-serialization

我是 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="&#x0;)">
     foo
     </Item>
     <Item corret="1" order="&#x1;)">
     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="&#x0;)">
 <test>foo</test>
 </Item>
 <Item corret="1" order="&#x1;)">
 <test>baa</test>
 </Item>
</ArrayOfItem>

即删除 test标记,将其内容移动到 item并放置所有 item s在列表里面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);

最佳答案

您需要另一个属性类型为 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属性(property)作为Items的内容元素而不是子元素 text元素替换 [XmlElement("text")][XmlText] :

[XmlText]
public string text { get; set; }

关于c# - 如何序列化列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31800196/

相关文章:

c# - 如何根据用户输入创建桌面快捷方式?

c# - 将 View 模型绑定(bind)到 View

c++ - 如何在没有任何其他修改的情况下在 C++ 中对 XML 字符串进行 "pretty print"处理?

java - 如何使用 SimpleXML 跨序列化保留结构?

xml - XML 属性中哪些字符无效(除非已编码)?

c# - 在 C# 中从 context.httprequest 读取原始数据

c# - 从数据库存储中选择 5 行,每一行都在一个数组中?

mysql - 使用 Mysql 和 PHP 进行实时搜索

java - 是否有 Java XML API 可以在不解析字符实体的情况下解析文档?

c# - 从SQL Server检索XML时如何防止非法字符出现在我的XML中