XML异常:无效字符

我正在从事一个小项目,该项目从一个长期运行的应用程序接收字符串形式的XML数据。我试图将此字符串数据加载到XDocumentSystem.Xml.Linq.XDocument)中,然后从中执行一些Xml魔术,并为数据报告创建一个xlsx文件

有时,我会收到包含无效XML字符的数据,当尝试将字符串解析为XDocument时,我会遇到此错误

[System.Xml.XmlException]
消息:“?”,十六进制值0x1C,是无效字符

因为我无法控制远程应用程序,所以您可以期望任何类型的角色

我很清楚,XML有一种可以在其中放入字符的方式,比如&amp#x1C或类似的东西

如果可能的话,我很想保留所有的数据。如果没有,那就让它去吧


我曾考虑过以编程方式编辑响应字符串,然后返回并尝试在抛出异常时重新解析,但我尝试了几种方法,但没有一种方法成功

谢谢你的想法

代码是这样的:

文本阅读器tr;
XDocument文件;
字符串响应//从服务器接收的XML字符串。
... 
tr=新的StringReader(响应);
尝试
{
doc=XDocument.Load(tr);
}
捕获(XMLE异常)
{
//在这里处理?
}

您可以使用XmlReader并将XmlReaderSettings.CheckCharacters属性设置为false。这将允许您读取XML文件,尽管其中包含无效字符。从那里可以导入并将其传递到XmlDocument或XDocument对象

你可以在我的博客上读到更多关于我的信息

要将数据加载到System.Xml.Linq.XDocument中,它看起来有点像这样:

XDocument XDocument=null;
XmlReaderSettings XmlReaderSettings=新XmlReaderSettings{CheckCharacters=false};
使用(XmlReader=XmlReader.Create(文件名,xmlReaderSettings))
{
xmlReader.MoveToContent();
xDocument=xDocument.Load(xmlReader);
}

更多信息可以在这里找到

发表评论