You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何反序列化XML子元素?为Items属性添加何种序列化特性?

XML反序列化:为List属性添加正确的序列化特性

先看你给出的类定义:

[XmlElement] 
public class Container { 
    [XmlAttribute] 
    public string Name { get; set; } 
    //TODO: set xml serialization attribute. 
    public List<Item> Items { get; set; } 
}

还有对应的XML结构(这里帮你补全了未闭合的标签,实际反序列化时XML语法必须正确哦):

<Container Name="Container1"> 
    <Item>...</Item> 
    <Item>...</Item> 
    <Item>...</Item> 
</Container>

你只需要给Items属性加上[XmlElement("Item")]这个特性就可以啦!修改后的代码如下:

[XmlElement] 
public class Container { 
    [XmlAttribute] 
    public string Name { get; set; } 
    [XmlElement("Item")]
    public List<Item> Items { get; set; } 
}

为啥要用这个特性?给你简单解释下:

  • 默认情况下,如果不对List类型属性做特殊标记,XML序列化器会期望有一个外层包裹节点(比如<Items>),再把所有<Item>放在这个节点里面
  • 但你的XML里是直接把多个<Item>作为<Container>的直接子元素,没有外层的<Items>节点,所以用[XmlElement("Item")]可以告诉序列化器:每个<Item>元素直接对应Items列表里的一项,不需要额外的包裹容器。

这样就能顺利把XML里的多个<Item>反序列化成Items列表啦!

内容的提问来源于stack exchange,提问作者MaxP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:40:49