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

C# XMLSerializer:如何自定义嵌套类的XML元素与属性?

调整C#类的XML序列化特性以匹配目标格式

嘿,这个问题很好解决,只需要修改两处XML序列化特性就能得到你想要的结果啦,具体调整如下:

首先先明确你的需求:要把序列化后的<taxdetails>标签改成<TaxAmount>,同时把属性TaxAmountIncluded映射为Included。

修改后的完整类定义

public class Item {
    [XmlAttribute()]
    public string Price;
    [XmlAttribute()]
    public string UnitOfMeasure;
    // 指定序列化后的子标签名为TaxAmount
    [XmlElement("TaxAmount")]
    public TaxDetails taxdetails;
}

public class TaxDetails {
    // 指定XML属性名为Included,替换原属性名
    [XmlAttribute("Included")]
    public string TaxAmountIncluded;
    [XmlAttribute()]
    public string Amount;
}

关键修改点解释

  • 对于Item类里的taxdetails字段:你之前写的[XmlElement("")]是空值,序列化时会默认使用字段名taxdetails,改成[XmlElement("TaxAmount")]后,就能生成<TaxAmount>标签了。
  • 对于TaxDetails类里的TaxAmountIncluded属性:给它加上[XmlAttribute("Included")]特性,就能告诉XMLSerializer把这个属性序列化为名为Included的XML属性,而不是原属性名。

另外要注意,如果你的目标XML里Included属性值是TRUE,记得给taxdetails.TaxAmountIncluded赋值时使用字符串"TRUE",这样序列化后的结果就完全和你想要的一致啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:07:02