У меня есть пользовательский тип, который я хочу сериализовать, этот пользовательский тип принимает ввод, который может состоять из escape-символов.
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----------
Когда клиент настраивает входной объект как PRINTLINE00
СОСТОЯНИЕ ОТКЛОНЕНИЯ 217 , я получаю исключение, когда десериализуются те же данные:
Исключение составляют: - Сообщение: в документе 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>DENIAL STATE 217</FieldValue>
</Field>
</Fields>
</InputEntry>
--------------------
Когда символы экранирующего типа являются частью CustomTypeObj, при десериализации возникает исключение.
Вопрос 1) Как мне это преодолеть?,
Вопрос 2) Я должен использовать StringReader и StringWriter, а не поток памяти или другие способы. StringWriter / reader будет обслуживать только мои внутренние функции.
Вопрос 3) Как можно обрабатывать эти escape-символы?