为什么XML Serializer将字符附加到我的XmlAttribute?

时间:2013-07-22 18:43:47

标签: c# xml-serialization

这是我的财产:

    /// <summary>
    /// The Business Unit
    /// </summary>
    [XmlAttribute("ows_Business_x0020_Unit")]
    public string BusinessUnit { get; set; }

当我在具有BusinessUnit的对象上调用Serialize时,我得到:

 ows_Business_x005F_x0020_Unit=\"Hi\"

_x005F来自哪里?

2 个答案:

答案 0 :(得分:3)

这是一个逃脱序列。 _x0020实际上是一个空格的另一个转义序列,所以它试图逃避转义序列,因此它不会让你感到困惑,你真的想要转义序列,而不是unescape值。所以你的属性应该是这样的:

public class MyClass
{
     [XmlAttribute("ows_Business Unit")]
     public string BusinessUnit { get; set; } 
}

这会将属性序列化为ows_Business_x0020_Unit

答案 1 :(得分:1)

Microsoft将某些字符编码为_xZZZ_,因此任何看起来像_xZZZ_的名称都会被转义。他们选择通过搜索“_x”并将下划线编码为_x005F来处理此问题。

如果你避免在你的任何名字中包含“_x”,你的生活会更容易。