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

如何使用Xml Attribute序列化含节点集合的XML并正确读取EVENT项数据

解决方案

你可以直接删除冗余的EventsCollection类,通过XmlArray + XmlArrayItem组合特性完成层级映射,配置后可以直接用List<EventItem>接收所有EVENT节点数据。

修改后的实体类代码

// EventItem类可保留原有配置,也可以删除无用的XmlRoot特性
public class EventItem
{
    [XmlElement("Id")]
    public int ID {get; set;}
    
    [XmlElement("EventNumber")]
    public int EventNumber {get; set;}
}

[XmlRoot(ElementName="MSGDATA")]
public class EventMsgData
{
    // XmlArray指定外层集合节点名,XmlArrayItem指定集合内子元素节点名
    [XmlArray("EVENTSCOLLECTION")]
    [XmlArrayItem("EVENT")]
    public List<EventItem> Events { get; set; } = new List<EventItem>();
}

修正后的调用代码

注意你原有代码的拼写错误:类名是XmlSerializer不是XmlSerialized

XmlSerializer xmls = new XmlSerializer(typeof(EventMsgData));
EventMsgData result = (EventMsgData)xmls.Deserialize(new StringReader("你的MSGDATA节点XML文本"));

原代码读取失败的原因

你之前定义的EventsCollection类的EventItems属性没有添加[XmlElement("EVENT")]特性,序列化器无法识别集合对应的子节点名,所以得到的是空列表。如果确实需要保留EventsCollection类,只需要给EventItems属性添加[XmlElement("EVENT")]即可正常读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:06:11