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

C# 使用XmlSerializer序列化struct时如何避免生成额外XML节点

解决方法

给BaseUtcTimeStamp结构体的UtcTimestamp属性添加[XmlText]特性即可,该特性会告知XmlSerializer将当前属性值作为所属节点的文本内容序列化,不会生成额外的子节点。同时建议补全属性的set方法逻辑,避免反序列化时无法正常赋值。

修改后的BaseUtcTimeStamp代码如下:

[Serializable]
public struct BaseUtcTimeStamp
{
    private string _utcTimestamp;

    [XmlText]
    public string UtcTimestamp 
    { 
        get => _utcTimestamp; 
        set => _utcTimestamp = value; 
    }

    public BaseUtcTimeStamp(DateTime utcDateTime)
    {
        if (utcDateTime.Kind != DateTimeKind.Utc)
        {
            throw new ArgumentException("Given dateTime must be Utc.");
        }
        _utcTimestamp = utcDateTime.ToString("yyyy-MM-ddTHH:mm:ssZ");
    }
 }

修改后序列化输出的XML会直接将时间字符串作为versionAsOf节点的内容,完全符合预期效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 19:09:02