Я сериализую очень большой List
с помощью этого кода:
public static string SerializeObjectToXML<T>(T item)
{
XmlSerializer xs = new XmlSerializer(typeof(T));
using (StringWriter writer = new StringWriter())
{
xs.Serialize(writer, item);
return writer.ToString();
}
}
И десериализую его с помощью этого кода:
public static T DeserializeXMLToObject<T>(string xmlText)
{
if (string.IsNullOrEmpty(xmlText)) return default(T);
XmlSerializer xs = new XmlSerializer(typeof(T));
using (MemoryStream memoryStream = new MemoryStream(new UnicodeEncoding().GetBytes(xmlText.Replace((char)0x1A, ' '))))
using (XmlTextReader xsText = new XmlTextReader(memoryStream))
{
xsText.Normalization = true;
return (T)xs.Deserialize(xsText);
}
}
Но я получаю это исключение, когда Я десериализую его:
XMLException: Ошибка в XML-документе (217388, 15). '[]', шестнадцатеричное значение 0x1A, является недопустимым символом. Строка 217388, позиция 15.
в системе .Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, события XmlDeserializationEvents)
в System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader)
ПочемуxmlText. Replace((char)0x1A, ' ')
строка не работает, что это за колдовство?
List
слишком велик, а в окнах просмотра просто отображается Невозможно оценить выражение. Недостаточно памяти. в состоянии завершить эту операцию.
сообщение об ошибке.