The Invulnerable XMLException

Background

Я сериализую очень большой 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, ' ')строка не работает, что это за колдовство?

Некоторые ограничения

  • Мой код на C#, framework 4, встроенный в VS2010 Pro.
  • Я не могу просмотреть значение xmlText в режиме отладки, потому что Listслишком велик, а в окнах просмотра просто отображается Невозможно оценить выражение. Недостаточно памяти. в состоянии завершить эту операцию. сообщение об ошибке.
5
задан John Saunders 21 March 2012 в 04:53
поделиться