C# Xml分析错误:十六进制值是无效字符
我尝试使用以下代码获取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())) {
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
存档中