我有一个我要序列化的自定义类型,这个自定义类型接受可能包含转义字符的输入

时间:2010-05-25 07:08:00

标签: .net xml-serialization

我有一个我要序列化的自定义类型,这个自定义类型接受可能包含转义字符的输入。

M1_Serilizer(MyCustomType customTypeObj)
{
    XmlSerializer serializer = new XmlSerializer(typeof(MyCustomType));
    StringWriter sw = new StringWriter(CultureInfo.InvariantCulture);
    serializer.Serialize(sw, customTypeObj);
    string str= sw.ToString();
    M2_Deserializer(str);
}

M2_Deserializer(string str)
{
    XmlSerializer serializer = new XmlSerializer(typeof(MyCustomType));
    StringReader sr = new StringReader(str);
    MyCustomType customTypeObj = (MyCustomType)serializer.Deserialize(sr);
}

----------Exception details----------

当客户将输入obj配置为< FieldName> PRINTLINE00< / FieldName>

< FieldValue> DENIAL STATE 217< / FieldValue>,当反序列化相同数据时出现异常:

  

例外情况是: - 消息:XML文档中存在错误(6,22)。

 String:
 <?xml version="1.0" encoding="utf-16"?>

 <InputEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     <Fields>
         <Field>
             <FieldName>PRINTLINE00</FieldName>
             <FieldValue>&#x1B;DENIAL STATE 217</FieldValue>
        </Field>
     </Fields>
 </InputEntry>

 --------------------

当转义类型字符是CustomTypeObj的一部分时,在反序列化时它会抛出异常。

问题1)我如何克服这个问题?

问题2)我应该使用StringReader和StringWriter而不是内存流或其他方式。 StringWriter / reader仅提供我的内部功能。

问题3)如何处理这些逃避字符?

0 个答案:

没有答案