允许任何十六进制值的C#编码
本文关键字:编码 许任何 十六进制 | 更新日期: 2023-09-27 18:28:24
我使用以下代码将XML string
反序列化为T
类型的object
:
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,在VS2010Pro中构建的。
没有这样的编码。这些字符在XML中是非法的。
如果您想序列化二进制数据,那么您应该将其转换为base64或十六进制或其他格式。