c# - 如何让 XmlSerializer 不序列化列表容器标签?

标签 c# xml xml-serialization

我有一个想要序列化的简单对象图,但我一直无法找到解决此问题的方法。在这里:

   [XmlRoot]
    public partial class MyData
    {

        private List<MyDatum> itemsField;

        public MyData()
        {
            this.anyAttrField = new List<System.Xml.XmlAttribute>();
            this.itemsField = new List<MyDatum>();
        }

        [XmlElement(Type = typeof(MyDatum))]
        public List<MyDatum> Items
        {
            get
            {
                return this.itemsField;
            }
            set
            {
                this.itemsField = value;
            }
        }
    }

这会产生以下 XML:

<MyData>
    <Items>
        <MyDatum/>
        <MyDatum/>
        ...
    </items>
</MyData>

我想删除“Items”容器标签以生成此标签:

<MyData>
    <MyDatum/>
    <MyDatum/>
    ...
</MyData>

我尝试了各种解决方案,但似乎无法找到解决方案。

最佳答案

在您的 [XmlElement] 中指定一个元素名称属性:

[XmlElement("MyDatum", Type = typeof(MyDatum))]
public List<MyDatum> Items {
    // ...
}

根据 this article在 MSDN 上,这将删除序列化项目周围的包​​装器元素。

关于c# - 如何让 XmlSerializer 不序列化列表容器标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8199738/

相关文章:

c# - Kendo MVC 在 Update 调用上触发 Create 方法

c# - 为 Nuget 包在 teamcity 中构建失败

java - 如何检测所需的 XML 属性?

objective-c - 如何将 xml(对象)映射到 Objective-C 中的方法?

xml - 使用clj-xpath在带有任意标签的clojure中解析xml

c# - 如何使用自定义对象列表序列化一个类?

c# - NPGSQL:使用 LWGEOMCOLLECTION 类型调用的关联操作

c# - 通过 MAPI 接口(interface)从 MailItem 获取电子邮件文件夹

java - 是否需要带有 Androids XMLSerializer 的 startDocument()?

c# - 如何动态添加 XmlInclude 属性