我使用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)
答案 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
语句可确保清除WebResponse
和Stream
,即使引发了异常。
答案 1 :(得分:1)
不仅仅是
GeoCodeXml=GeoCodeXml.Replace("\n","");
如果它真正返回\ n,如此处所述。