如何在XmlDocument()上从URL加载XML

时间:2011-09-21 08:40:45

标签: c# xml

我有这段代码:

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 个答案:

答案 0 :(得分:31)

它告诉您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);

答案 1 :(得分:6)

您需要使用Load()代替LoadXML()。 LoadXML尝试将字符串解析为XML,在这种情况下是您的URL。