Я использую следующий код для десериализации XML string
до object
типа T
:
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)))
using (XmlTextReader xsText = new XmlTextReader(memoryStream))
{
xsText.Normalization = true;
return (T)xs.Deserialize(xsText);
}
}
Но он выдает исключение, когда принимает недопустимое шестнадцатеричное значение:
XMLException : в документе XML есть ошибка (217388, 15). «[]», шестнадцатеричное значение 0x1A, является недопустимым символом. Линия 217388, позиция 15.
в System.Xml.Serialization.XmlSerializer.Deserialize (XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
в System.Xml.Serialization.XmlSerializer.Deserialize (XmlReader xmlReader)
В какой кодировке я должен изменить строку new UnicodeEncoding().GetBytes(xmlText))
на такую, которая будет принимать любое шестнадцатеричное значение?
Мой код на C #, framework 4, сборка в VS2010 Pro.