【问题标题】:How to load XML from URL on XmlDocument()如何从 XmlDocument() 上的 URL 加载 XML
【发布时间】:2011-09-21 08:40:44
【问题描述】:

我有这个代码:

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。

【问题讨论】:

    标签: c# xml


    【解决方案1】:

    注意:对于当今大多数 XML 解析需求,您最好使用 XDocument

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

    【讨论】:

    • 它说异常详细信息:System.Xml.XmlException:给定编码中的字符无效。第 1 行,位置 503。
    • 这让我很难过。一定与编码有关,但无法深究。有人吗?
    • 这让我很困惑,所以我提出了一个问题:stackoverflow.com/questions/7497371/…
    • 我相信如果你在提交之前对你的字符串进行 URLEncode,它应该可以消除这个问题。 System.Web.HttpUtility.UrlEncode(URL, System.Text.Encoding.UTF8);
    • 您能看到我的question 之一关于 xml 响应吗?
    【解决方案2】:

    您需要使用Load() 而不是LoadXML()。 LoadXML 尝试将字符串解析为 XML,在本例中是您的 URL。

    【讨论】:

    • 你能看到我的question 之一关于 xml 响应吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多