Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XML序列化和编码属性_C#_Xml_Xml Parsing_Xmlserializer - Fatal编程技术网

C# XML序列化和编码属性

C# XML序列化和编码属性,c#,xml,xml-parsing,xmlserializer,C#,Xml,Xml Parsing,Xmlserializer,我正在尝试使用.NET XmlSerializer反序列化具有以下元素的XML: <SomeElement Foo_x003a_Bar="123"/> 未从XML读取属性。在UnknownAttribute事件处理程序中,我看到Foo_x003a_Bar未被识别,有效属性列表(Args.ExpectedAttributes)包含Foo_x005F_x003a_Bar 请问这是怎么回事?0x5F是未得分字符的代码。同一元素/类中名称包含\u x0020\u的其他属性将正确反序列化。为

我正在尝试使用.NET XmlSerializer反序列化具有以下元素的XML:

<SomeElement Foo_x003a_Bar="123"/>
未从XML读取属性。在
UnknownAttribute
事件处理程序中,我看到
Foo_x003a_Bar
未被识别,有效属性列表(
Args.ExpectedAttributes
)包含
Foo_x005F_x003a_Bar

请问这是怎么回事?0x5F是未得分字符的代码。同一元素/类中名称包含
\u x0020\u
的其他属性将正确反序列化。为什么
\u x003a\u
会得到某种特殊待遇

编辑:在解析XML字符串之前,以搜索/替换的形式对其进行恶意攻击。但仍然如此

EDIT2:实现这种编码的函数是
XmlConvert:EncodeName
XmlConvert:EncodeLocalName
。后者处理冒号,前者不处理。看起来他们在呼叫
EncodeName


EDIT3:。请在那里导航并单击“我也可以”,如果可以的话:)

可能它的处理方式有所不同,因为x003a_uuu是:(冒号)20是空格的代码。这两个都是属性名IIRC的禁区。尽管如此,整件事还是有双重编码错误的味道。
class SomeElement
{
    //...
    [XmlAttribute("Foo_x003a_Bar")]
    public string Foo_Bar;
}