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
相关产品推荐
相关产品推荐

