XML序列化和编码属性

时间:2014-05-19 17:32:31

标签: c# xml xml-parsing xmlserializer

我尝试使用.NET XmlSerializer使用以下元素反序列化XML:

<SomeElement Foo_x003a_Bar="123"/>

在目标类中,有以下声明:

class SomeElement
{
    //...
    [XmlAttribute("Foo_x003a_Bar")]
    public string Foo_Bar;
}

未从XML读取该属性。在UnknownAttribute事件处理程序中,我发现无法识别Foo_x003a_Bar,而有效属性列表(Args.ExpectedAttributes)则包含Foo_x005F_x003a_Bar

这是什么交易,好吗? 0x5F是非核心字符的代码。名称包含_x0020_的同一元素/类中的其他属性正确反序列化。为什么_x003a_会得到某种特殊待遇?

编辑:在解析之前以XML字符串中的搜索/替换形式的脏hackery有帮助。但仍然。

EDIT2:实现此类编码的函数是XmlConvert:EncodeNameXmlConvert:EncodeLocalName。后者处理冒号,前者没有。看起来他们正在调用EncodeName ...

EDIT3:filed a bug report with Microsoft。请在那里导航并点击&#34;我也可以&#34;如果你也可以:)

0 个答案:

没有答案