Как загрузить XML из URL в XmlDocument () - PullRequest
18 голосов
/ 21 сентября 2011

У меня есть этот код:

string m_strFilePath = "http://www.google.com/ig/api?weather=12414&hl=it";

XmlDocument myXmlDocument = new XmlDocument();
myXmlDocument.LoadXml(m_strFilePath);

foreach (XmlNode RootNode in myXmlDocument.ChildNodes)
{
}

но когда я пытаюсь выполнить его, я получаю эту ошибку:

Сведения об исключении: System.Xml.XmlException: данные на корневом уровне недействительны. Строка 1, позиция 1.

Почему? Где я не прав? И как я могу исправить эту проблему на C #?

Также пробовал с:

myXmlDocument.Load(m_strFilePath);    

но я получаю:

Сведения об исключении: System.Xml.XmlException: недопустимый символ в заданной кодировке. Строка 1, позиция 503.

Ответы [ 2 ]

31 голосов
/ 21 сентября 2011

Это говорит о том, что значение m_strFilePath не является допустимым XML. Попробуйте:

string m_strFilePath = "http://www.google.com/ig/api?weather=12414&hl=it";
XmlDocument myXmlDocument = new XmlDocument();
myXmlDocument.Load(m_strFilePath); //Load NOT LoadXml

Однако, это терпит неудачу (по неизвестной причине ..., кажется, душит à из Umidità). Следующие работы (все еще пытаясь выяснить, в чем разница):

var m_strFilePath = "http://www.google.com/ig/api?weather=12414&hl=it";
string xmlStr;
using(var wc = new WebClient())
{
    xmlStr = wc.DownloadString(m_strFilePath);
}
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlStr);
6 голосов
/ 21 сентября 2011

Вам нужно использовать Load() вместо LoadXML(). LoadXML пытается проанализировать строку в XML, в данном случае ваш URL.

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