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

含下划线的XML节点反序列化后值为NULL的问题求助

XML反序列化时<Test_x0020_Id>节点返回NULL的解决思路

问题场景

XML中的<Shape>节点能正常反序列化取值,但<Test_x0020_Id>节点始终返回NULL。

XML内容

<?xml version="1.0" encoding="utf-8"?>
<Test1>
    <TestData>
        <Test_x0020_Id>P123</Test_x0020_Id>
        <Shape>ROUND</Shape>
    </TestData>
</Test1>

原C#代码

XmlSerializer serializer = new XmlSerializer(typeof(List<TestData>), new XmlRootAttribute("Test1"));

StringReader stringReader = new StringReader(content);

List<TestData> productList = (List<TestData>)serializer.Deserialize(stringReader);

public class TestData
{
    [XmlElement("Test_x0020_Id")]
    public string Testx0020Id{ get; set; }
    public string Shape { get; set; }
}

解决思路

问题根源在于_x0020_是XML标准中对空格字符的转义表示(x0020对应空格的ASCII编码),XmlSerializer在解析时会自动将该转义序列转换为空格,所以你用Test_x0020_Id作为XmlElement的名称无法匹配到实际节点。

修正方案

直接将XmlElement特性的参数改为包含空格的名称即可:

public class TestData
{
    [XmlElement("Test Id")] // 用空格替代转义序列_x0020_
    public string Testx0020Id{ get; set; }
    public string Shape { get; set; }
}

补充说明

如果坚持要保留_x0020_的写法,也可以通过XmlAttributeOverrides手动设置映射规则,但上述直接替换为空格的方式更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 10:05:06