C # Stream Reader добавляет \ n в XML - PullRequest
1 голос
/ 19 мая 2010

Я использую класс StreamReader для получения XML для моего процесса геокодирования из 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);

Я возвращаю 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-версию этого консольного приложения.

Существует ли причина, по которой версия 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 ]

4 голосов
/ 19 мая 2010

Вам нужен 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 голос
/ 19 мая 2010

ты не просто делаешь

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

если он действительно возвращает \ n, как указано здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...