1

私はこのコードで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.

どうしたの?

4

1 に答える 1

4

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 を解凍できない場合は、適切な解凍ストリームに置き換える必要があります。

于 2012-09-17T21:54:02.143 に答える