Как загрузить XML из URL в XmlDocument()

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

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 ответа

Решение

Это говорит вам, что значение 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);

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

Другие вопросы по тегам