1

我使用 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,但它在 XML 中添加了 \n 和其他附加内容

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

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

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)
4

2 回答 2

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语句也能确保清除WebResponse和。Stream

于 2010-05-19T19:09:37.767 回答
1

你不只是做

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

如果它真的返回这里提到的 \n 。

于 2010-05-19T18:59:21.273 回答