【问题标题】:Why is The XML Serializer appending characters to my XmlAttribute?为什么 XML 序列化程序将字符附加到我的 XmlAttribute?
【发布时间】:2013-07-22 18:43:46
【问题描述】:

这是我的财产:

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

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

 ows_Business_x005F_x0020_Unit=\"Hi\"

_x005F 来自哪里?

【问题讨论】:

标签: c# xml-serialization


【解决方案1】:

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

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

这会将属性序列化为ows_Business_x0020_Unit

【讨论】:

    【解决方案2】:

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

    如果您避免在任何名字中包含“_x”,您的生活会更轻松。

    【讨论】:

    • 不幸的是,我正在调用外部网络服务,所以这不是一个选项。不过感谢您的解释:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    相关资源
    最近更新 更多