2011-02-24 58 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