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

如何不使用特性将XML反序列化为含嵌套对象的C#类

问题解决:无特性实现XML嵌套列表反序列化

问题原因

你当前的XmlAttributeOverrides配置存在两处关键错误:

  • 错误地针对List<HobbyDTO>类型配置,而非ManDTO类的Hobbies属性
  • XmlElementAttribute指定的元素名是类名HobbyDTO,但XML中实际的子元素标签是<Hobby>

修正后的代码

正确的反序列化代码

// 假设rootElementName变量值为"Man"
XmlRootAttribute root = new XmlRootAttribute(rootElementName);

XmlAttributes attribs = new XmlAttributes();
// 指定XML中每个列表项对应的元素名为"Hobby"
attribs.XmlElements.Add(new XmlElementAttribute("Hobby"));

XmlAttributeOverrides overrides = new XmlAttributeOverrides();
// 针对ManDTO类的Hobbies属性应用配置
overrides.Add(typeof(ManDTO), "Hobbies", attribs);

var serializer = new XmlSerializer(typeof(ManDTO), overrides, new Type[] { typeof(HobbyDTO) }, root, "", "");
var result = (ManDTO)serializer.Deserialize(xml);

补充说明

  • 后续若<Hobby>元素添加属性或子节点,需确保HobbyDTO类的结构与之匹配
  • 反序列化结果需强制转换为ManDTO类型,避免隐式类型转换导致的类型错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:47:38