我正在尝试反序列化来自 Rest 服务的 xml 响应。我正在实现 IXmlSerialized,因为 xml 相当具体,并且我进行自定义序列化。响应包含非法 xml 字符,但由于我无法修改 xml,所以我必须处理它们。
解决方案似乎很简单:创建 XmlReader 时,我将 ChecCharacters 设置为 false 为其提供 XmlSetting:
XmlReaderSettings settings = new XmlReaderSettings();
settings.CheckCharacters = false;
using (var reader = XmlReader.Create(filename, settings))
{
var xRoot = new XmlRootAttribute(RootElement);
var serializer = new XmlSerializer(typeof(T), xRoot);
return (T)serializer.Deserialize(reader);
}
检查时,CheckCharacters 实际上设置为 false。
但我仍然不断收到如下错误:
{"'', hexadecimal value 0x01, is an invalid character. Line 9, position 55."}
我认为 CheckCharacters=false 设置是为了避免由于非法 Xml 字符而引发错误?
知道我在哪里犯了错误,为什么错误不断抛出?
提前致谢..
英国皇家空军
来自MSDN http://msdn.microsoft.com/en-us/library/system.xml.xmlreadersettings.checkcharacters%28v=vs.110%29.aspx:
如果 XmlReader 正在处理文本数据,则无论属性设置如何,它都会始终检查 XML 名称和文本内容是否有效。将 CheckCharacters 设置为 false 会关闭字符实体引用的字符检查。
所以设置CheckCharacters
to false
不允许您解析无效的 XML。
您可以尝试用转义符替换二进制字符:'\x01'
with ""
etc. XmlReader
与残疾人CheckCharacters
似乎接受这些。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)