C# Xml分析错误:十六进制值是无效字符

C# Xml分析错误:十六进制值是无效字符,c#,xml,xml-parsing,httpwebrequest,xmldocument,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文件:

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,则必须将其替换为相应的解压流。

假设应用于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,则必须用适当的解压流替换它。

调用
LoadXml
之前
XML
的值是多少?@MikeMcCaughan这是一个奇怪的字符串,如下所示:
�\b\0\0\0\0\0\0�ے�F��{�\B�C�D̎vl�\a$�J��%�G�%UH��N�X�H�*\B�\v��ZӚ~�����݌�\\|��_�D�H�'�U��uO�L-d�������[�C�$���O�BZ�_������?�ˏo�铷�˟���0�我�R��C1t\aj�T��7}
…但是源xml肯定是正确的。是否有任何类型的压缩应用于xml?@JGinSD-Hmm,我想是的。如果我在浏览器中运行
url
,我会得到
*.xml
文件包装在
*.bz
文档中,
xml
在调用
LoadXml
之前的值是多少?@MikeMcCaughanng,像这样:
�\b\0\0\0\0\0\0�ے�F��{�\B�C�D̎vl�\a$�J��%�G�%UH��N�X�H�*\B�\v��ZӚ~�����݌�\\|��_�D�H�'�U��uO�L-d�������[�C�$���O�BZ�_������?�ˏo�铷�˟���0�我�R��C1t\aj�T��7} 
…但源xml绝对正确是否有任何类型的压缩应用于xml?@JGinSD-Hmm,我想是的。如果我在浏览器中运行
url
,我会得到
*.xml
文件包装在
*.bz
存档中