为什么XML序列化程序将字符附加到我的XmlAttribute中

本文关键字:我的 XmlAttribute 字符 XML 序列化 程序 为什么 | 更新日期: 2023-09-27 18:24:13

这是我的属性:

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

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

 ows_Business_x005F_x0020_Unit='"Hi'"

_x005F从哪里来?

为什么XML序列化程序将字符附加到我的XmlAttribute中

这是一个转义序列。_x0020实际上是空间的另一个转义序列,所以它试图转义该转义序列,这样就不会混淆你想要的是转义序列,而不是unescape值。所以你的属性应该是这样的:

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

这将把属性序列化为ows_Business_x0020_Unit

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

如果你不在名字里加"_x",你的生活会更轻松。