我使用以下代码将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事件)中的System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader)
我应该以哪种编码方式将 new UnicodeEncoding().GetBytes(xmlText))
更改为接受任何十六进制值?
我的代码在C#,框架4中,在VS2010 Pro中构建。
答案 0 :(得分:1)
没有这样的编码。这些字符在XML中完全是非法的。
如果要序列化二进制数据,则应将其转换为base64或hex等。