C#Stream Reader将\ n添加到XML

时间:2010-05-19 18:55:27

标签: c# xml streamreader geocode

我使用StreamReader类从Google获取我的GeoCoding流程的XML。

StreamReader srGeoCode = new StreamReader(WebRequest.Create(Url).GetResponse().GetResponseStream());
String GeoCodeXml = srGeoCode.ReadToEnd();
XmlDocument XmlDoc = new XmlDocument();
GeoCode oGeoCode = new GeoCode();
XmlDoc.Load(GeoCodeXml);

我得到了XML,但它添加了\ n和其他额外的XML

<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<kml xmlns=\"http://earth.google.com/kml/2.0\"><Response>\n  <name>

我在VB中使用相同的代码但它没有这样做。我可以使用此控制台应用程序的VB版本成功地对我的信息进行GeoCode。

C#版本是否有理由将此额外数据添加到我检索回来的XML中?我正在尽力将所有内容转换为C#。我喜欢用VB编写代码。

这是VB代码:

    Dim wreqGeoCode As WebRequest = WebRequest.Create(strURL)
    Dim wresGeoCode As WebResponse = wreqGeoCode.GetResponse
    Dim srGeoCode As New StreamReader(wresGeoCode.GetResponseStream())
    Dim strXML As String = srGeoCode.ReadToEnd()
    Dim xmlDoc As New XmlDocument
    xmlDoc.LoadXml(strXML)

2 个答案:

答案 0 :(得分:4)

如果要加载字符串,则需要XmlDoc.LoadXml。从文件加载负载。


顺便说一下,替代方案也更有效率。您可以直接从流中加载文档:

WebRequest webRequest = WebRequest.Create(Url);
using (WebResponse webResponse = webRequest.GetResponse())
{
    using (Stream responseStream = webResponse.GetResponseStream())
    {
        XmlDocument XmlDoc = new XmlDocument();
        GeoCode oGeoCode = new GeoCode();
        XmlDoc.Load(responseStream);
    }
}

using语句可确保清除WebResponseStream,即使引发了异常。

答案 1 :(得分:1)

不仅仅是

   GeoCodeXml=GeoCodeXml.Replace("\n","");

如果它真正返回\ n,如此处所述。