C # Corriente del lector añadiendo \ n a XML
-
01-10-2019 - |
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)
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í.