C#中如何为指定XML节点添加XmlAttribute并设置节点文本值
解决XmlSerializer生成带属性且文本内容直接作为节点值的XML问题
要实现你需要的XML结构,核心是用[XmlText]特性替代原来的[XmlElement],XmlText可以和XmlAttribute完美共存,专门用来指定类属性作为XML节点的文本内容。
修改后的LineExtensionAmountDto类代码
[XmlType(Namespace = Constants.CbcNamespace)] public class LineExtensionAmountDto { /// <summary> /// LineExtensionAmount的数值内容 /// </summary> [XmlText] public decimal? Amount { get; set; } = 54545; /// <summary> /// CurrencyID属性 /// </summary> [XmlAttribute("currencyID")] public string? CurrencyID { get; set; } = "RSD"; }
调整LegalMonetaryTotal类的对应属性
确保LegalMonetaryTotal类中对应的属性类型改为LineExtensionAmountDto:
[XmlElement(Namespace = Constants.CbcNamespace)] public LineExtensionAmountDto? LineExtensionAmount { get; set; }
最终生成的XML结构
这样序列化后就能得到你想要的结果:
<cac:LegalMonetaryTotal> <cbc:LineExtensionAmount currencyID="RSD">54545</cbc:LineExtensionAmount> </cac:LegalMonetaryTotal>
内容的提问来源于stack exchange,提问作者lonelydev101
相关产品推荐
相关产品推荐

