c# - xml解析错误: hexadecimal value is an invalid character

标签 c# xml xml-parsing httpwebrequest xmldocument

我尝试用这段代码获取 xml 文件:

HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
string xml = string.Empty;
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
    xml = sr.ReadToEnd();
}

XmlDocument xmlDoc = new XmlDocument();
//xml = xml.Replace((char)(0x1F), ' ');
xmlDoc.LoadXml(xml);

但我得到如下异常:

' ', hexadecimal value 0x1F, is an invalid character. Line 1, position 1.

因此,根据 stackoverflow 上的许多类似问题,我尝试添加此注释行,但随后出现异常:

Data at the root level is invalid. Line 1, position 2.

怎么了?

最佳答案

假设应用于 XML 的压缩是 GZip,您可以像这样解压缩 XML:

HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
string xml = string.Empty;
using (GZipStream gzip = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress))
using (StreamReader sr = new StreamReader(gzip))
{
  xml = sr.ReadToEnd();
}

XmlDocument xmlDoc = new XmlDocument();
//xml = xml.Replace((char)(0x1F), ' ');
xmlDoc.LoadXml(xml);

如果 GZipStream 无法解压 XML,您必须将其替换为适当的解压流。

关于c# - xml解析错误: hexadecimal value is an invalid character,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12467312/

相关文章:

c# - timeBeginPeriod 不适用于 Intel Comet Lake CPU (i5 10400H)

c# - 请求对象的浏览器类型值不一致

xml - 是否可以使用 xsd 数据类型(例如 xsd :string) and xml language attribute simultaneously in OWL2/RDF?

javascript - HTML 页面看不到 AngularJS 模块

xml - 如何在rest API Flutter中发布/发送XML数据而不是JSON?

javascript - 将 xml 文件数据保存在 javascript 变量中

c# - SQL 查询中的 {0},{1},{2},{3} 是什么

c# - 无法从 C# 中的线程类继承?

ios - 在 iOS 应用程序和数据库服务器之间进行通信的不同方式有哪些?

xml - 如何使用XPATH查询以下xml?