我有一個XML文件,當我使用XSD工具從XML創建一個類對象時,我收到一條消息:「名爲'link'的列已經屬於這個DataTable:無法將嵌套表設置爲相同的名稱。如何去除一個DataTable的XML?
我想知道我怎樣才能正確地反序列化這個XML文件,這樣就可以在一個應用程序中顯示數據。該XML文件基本上是RSS新聞聚合數據。
你可以看到整個XML文件結構在這裏:https://github.com/karimo94/XMLDemo/blob/master/leaguenews.xml
我有一個XML文件,當我使用XSD工具從XML創建一個類對象時,我收到一條消息:「名爲'link'的列已經屬於這個DataTable:無法將嵌套表設置爲相同的名稱。如何去除一個DataTable的XML?
我想知道我怎樣才能正確地反序列化這個XML文件,這樣就可以在一個應用程序中顯示數據。該XML文件基本上是RSS新聞聚合數據。
你可以看到整個XML文件結構在這裏:https://github.com/karimo94/XMLDemo/blob/master/leaguenews.xml
我試圖左右逢源和誠實,我不能讓它沒有錯誤正確反序列化。幸運的是,我能夠使用rss2json.com並將Rss源轉換爲一個json,我可以使用Newtonsoft解析Json.Net
看看這個設計
DataSet ds = new DataSet();
XmlSerializer xmlSerializer = new XmlSerializer(typeof(DataSet));
FileStream readStream = new FileStream("leaguenews.xml", FileMode.Open);
ds = (DataSet)xmlSerializer.Deserialize(readStream);
readStream.Close();
dataGridView1.DataSource = ds.Tables[0];
嘗試followng:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.Data;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test1.xml";
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("Title", typeof(string));
dt.Columns.Add("Description", typeof(string));
dt.Columns.Add("Link", typeof(string));
dt.Columns.Add("IsPermaLink", typeof(Boolean));
dt.Columns.Add("GUID", typeof(string));
dt.Columns.Add("Publish Date", typeof(DateTime));
dt.Columns.Add("Width", typeof(int));
dt.Columns.Add("Height", typeof(int));
dt.Columns.Add("URL", typeof(string));
XDocument doc = XDocument.Load(FILENAME); //or uri
List<XElement> items = doc.Descendants("item").ToList();
foreach (XElement item in items)
{
dt.Rows.Add(new object[] {
(string)item.Element("title"),
(string)item.Element("description"),
(string)item.Element("link"),
(Boolean)item.Element("guid").Attribute("isPermaLink"),
(string)item.Element("guid"),
(DateTime)item.Element("pubDate"),
(int)item.Elements().Where(x => x.Name.LocalName == "thumbnail").FirstOrDefault().Attribute("width"),
(int)item.Elements().Where(x => x.Name.LocalName == "thumbnail").FirstOrDefault().Attribute("height"),
(string)item.Elements().Where(x => x.Name.LocalName == "thumbnail").FirstOrDefault().Attribute("url")
});
}
}
}
}
我們需要看到一個包含示例XML的[mcve]以確定發生了什麼,但您可以嘗試使用xsd.exe選項['/classes'](https://msdn.microsoft.com/en-us/library/x6c1kb0s(v=vs.110).aspx)生成POCO,而不是'DataSet'使用'/ dataset'。 – dbc
相關? [代碼返回錯誤名爲'link'的列已屬於](https://stackoverflow.com/q/18209393/3744182)。 – dbc
要使用RSS,您可以使用[SyndicationFeed](https://msdn.microsoft.com/en-us/library/system.servicemodel.syndication.syndicationfeed(v = vs.110).aspx)類。 –