这是我的财产:
/// <summary>
/// The Business Unit
/// </summary>
[XmlAttribute("ows_Business_x0020_Unit")]
public string BusinessUnit { get; set; }
当我在具有BusinessUnit的对象上调用Serialize时,我得到:
ows_Business_x005F_x0020_Unit=\"Hi\"
_x005F来自哪里?
答案 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”,你的生活会更容易。