Pregunta

Yo uso la clase StreamReader para obtener XML para mi proceso de geocodificación de Google.

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

regrese XML pero añade \ n y otros extras para el XML

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

Tengo el mismo código en VB y que no lo hace. Puedo GeoCode éxito mi información usando la versión VB de esta aplicación de consola.

¿Hay alguna razón la versión C # agrega estos datos extra para el XML que recuperar de nuevo? Estoy haciendo mi mejor esfuerzo para convertir todo a C #. Como me gusta la codificación en ella más de VB.

Este es el código 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)
¿Fue útil?

Solución

Es necesario XmlDoc.LoadXml si va a cargar una cadena. cargas de carga de un archivo.


Por cierto, la alternativa es también más eficiente. Puede cargar el documento directamente desde la corriente:

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);
    }
}

Las declaraciones using aseguran que el WebResponse y Stream asearse, incluso si se produce una excepción.

Otros consejos

Y no sólo lo hacen

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

Si realmente es devolviendo el \ n como se ha mencionado aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top