2010-12-03 24 views
0

我想讀取一個標準的CNN新聞提要放入一個表,它告訴我「重複」鏈接「列異常。」上線:C#XmlTextReader和DataSet導致重複名稱異常

cnnds.ReadXml(CNNfeed); 

這裏是整個代碼,並停止代碼和引發錯誤,當它應該只是簡單地忽略重複列或使用最後一列。

XmlTextReader CNNfeed = new XmlTextReader("http://rss.cnn.com/rss/cnn_topstories.rss"); 

DataSet cnnds = new DataSet("CNN"); 
cnnds.ReadXml(CNNfeed, XmlReadMode.Auto); // read the XML feed 

DataTable CNNNewsFeedTable = new DataTable("CNNNewsFeed"); 

如何解決此問題?我試過所有的東西,唯一的方法就是正確地使用CNN feed。

我只是改變了XmlReadMode.ReadSchema,它通過這部分,但它說cnnds.Tables [1]是一個索引超出範圍。就好像它是一個空的XML一樣。

有沒有更簡單的方法來讀取其他網站的RSS提要沒有所有這些例外和問題?

編輯:它似乎增加了一個try {} catch(),但是多餘的,似乎繞過了這個問題。

+0

你不應該用 「新的XmlTextReader」。從.NET 2.0開始已經被棄用了。改爲使用`XmlReader.Create`。 – 2010-12-03 21:47:44

+0

John Saunders:但是XmlReader也出現同樣的錯誤。 – Muflix 2016-06-08 13:35:15

回答

2

如果要讀取數據集中的xml,則需要xml-schema(否則,ReadXml()無法區分不同的名稱空間)。

用途:

 var CNNfeed = new XmlTextReader("http://rss.cnn.com/rss/cnn_topstories.rss"); 

     var cnnds = new DataSet("CNN"); 
     cnnds.ReadXmlSchema("http://www.thearchitect.co.uk/schemas/rss-2_0.xsd"); // read the rss schema 
     cnnds.ReadXml(CNNfeed); // read the XML feed 

但我認爲你最好使用XPath來查找你需要的信息:

 var doc = XDocument.Load("http://rss.cnn.com/rss/cnn_topstories.rss"); 
     foreach (XElement node in (IEnumerable) doc.XPathEvaluate("//item")) 
     { 
      Console.WriteLine(node.XPathSelectElement("title").Value); 
     } 
相關問題