Mei*_*ude 13 c# xml linq-to-xml
我正在开发一个小项目,它从一个长期运行的应用程序接收字符串形式的XML数据.我正在尝试将此字符串数据加载到XDocument(System.Xml.Linq.XDocument)中,然后从那里执行一些XML Magic并为数据报告创建xlsx文件.
有时,我收到包含无效XML字符的数据,并且在尝试将字符串解析为a时XDocument,我收到此错误.
[System.Xml.XmlException]消息:'?',十六进制值0x1C,是无效字符.
由于我无法控制远程应用程序,因此您可以期待任何类型的角色.
我很清楚XML有一种方法可以将字符放在其中,例如类似的东西.
如果可能的话,我会非常喜欢保留所有数据.如果没有,那就不要了.
我已经考虑过以编程方式编辑响应字符串,然后返回并尝试重新解析如果抛出异常,但我尝试了一些方法,但它们似乎都没有成功.
谢谢你的想法.
代码就是这样的:
TextReader tr;
XDocument doc;
string response; //XML string received from server.
...
tr = new StringReader (response);
try
{
doc = XDocument.Load(tr);
}
catch (XmlException e)
{
//handle here?
}
Run Code Online (Sandbox Code Playgroud)
小智 17
您可以使用XmlReader并将XmlReaderSettings.CheckCharacters属性设置为false.这将允许您读取XML文件,尽管字符无效.从那里,您可以导入将其传递给XmlDocument或XDocument对象.
您可以在我的博客中阅读更多相关内容.
要将数据加载到System.Xml.Linq.XDocument,它将看起来像这样:
XDocument xDocument = null;
XmlReaderSettings xmlReaderSettings = new XmlReaderSettings { CheckCharacters = false };
using (XmlReader xmlReader = XmlReader.Create(filename, xmlReaderSettings))
{
xmlReader.MoveToContent();
xDocument = XDocument.Load(xmlReader);
}
Run Code Online (Sandbox Code Playgroud)
更多信息可以在这里找到.