2011-02-24 90 views
4

試圖簡單地解析XML文件;ASP.net從URL加載XML文件

protected void Page_Load(object sender, EventArgs e) 
    { 

     XmlDocument xdoc = new XmlDocument();//xml doc used for xml parsing 

     xdoc.LoadXml("http://latestpackagingnews.blogspot.com/feeds/posts/default");//loading XML in xml doc 

     XmlNodeList xNodelst = xdoc.DocumentElement.SelectNodes("entry");//reading node so that we can traverse thorugh the XML 

     foreach (XmlNode xNode in xNodelst)//traversing XML 
     { 
      litFeed.Text += "read"; 
     } 

    } 

,但我得到:

在根級別

數據是無效的。 第1行,位置1.

我必須首先對文件執行XMLHTTP請求嗎?或者我正確地假設我可以從外部網址加載它?

回答

8

試試這個:

protected void Page_Load(object sender, EventArgs e) 
{ 

    XmlDocument xdoc = new XmlDocument();//xml doc used for xml parsing 

    xdoc.Load(
     "http://latestpackagingnews.blogspot.com/feeds/posts/default" 
     );//loading XML in xml doc 

    XmlNodeList xNodelst = xdoc.DocumentElement.SelectNodes("entry");//reading node so that we can traverse thorugh the XML 

    foreach (XmlNode xNode in xNodelst)//traversing XML 
    { 
     litFeed.Text += "read"; 
    } 

} 

的loadXML直接等待一個XML字符串,其中負載可以使用URI來獲取XML數據。在你的代碼中,xml解析器實際上是試圖將地址解析爲xml,而不是uri位置的內容。

[編輯]你可以看看.Net框架內置的feed處理類。這些類位於System.ServiceModel.Syndication命名空間中。他們可以很容易地爲你解析工作。

+1

幾乎正確的...只是刪除了 「新的URI()」 位我的眼睛。 Load直接接受URL,但不是URI對象。 – 2011-02-24 09:50:37

+0

這些工作都沒有......和@Jeff,刪除新的URI行與我原來的問題中的代碼完全相同!?!?!? – 2011-02-24 09:54:36

+0

@Jeff Parker:thx爲您的警惕:) – 2011-02-24 09:57:14

9

我發現這個鏈接在雅虎非常有用和簡單。整齊!!​​!

http://developer.yahoo.com/dotnet/howto-xml_cs.html

+0

感謝您的鏈接+1 – 2011-09-16 21:35:00

+0

+1偉大的鏈接。鏈接中的一些示例應該在這裏複製,以防出於某種原因,鏈接被破壞。 – Josh 2012-06-19 01:45:55