2009-03-02 20 views
1

從XmlDocument或String到DataGrid中讀取Xml的最佳方式是什麼?將Xml讀入C#中的數據網格#

xml是否必須採用特定格式?

我必須使用A DataSet作爲中介嗎?

我正在研究一個客戶端,它使用由我的一位同事開發的服務器發送的Xml,我可以讓他更改Xml的格式以匹配DataGrid所需的格式。

回答

0

我們有一個部分答案來獲取數據到數據集中,但是它將它作爲一組關聯鏈接表讀取。

 DataSet ds = new DataSet(); 
     XmlTextReader xmlreader = new XmlTextReader(xmlSource, XmlNodeType.Document, null); 
     ds.ReadXml(xmlreader); 
2

這取決於您在哪個版本的.NET上運行。如果你可以使用Linq2Xml,那很簡單。只需創建一個XDocument並選擇子節點作爲匿名類型的列表。

如果你不能使用Linq2Xml,那麼你有其他幾個選擇。使用DataSet是一個,這可以很好地工作,但它取決於你正在接受的XML。另一種選擇是創建一個類,該類描述將從xml中讀取的實體,並手動通過xml節點。第三種選擇是使用Xml序列化並將xml反序列化爲對象列表。只要您爲其設置了類,就可以很好地工作。

最簡單的選擇將是創建一個XDocument或創建一個DataSet,如你所建議的。

2

顯然你的XML必須有效:)

之後,定義數據集,定義一個數據網格。使用數據集上的readXML方法來用XML填充數據集,使用dataBind完成並且您可以輕鬆完成。

DataSet myDataSet = new DataSet(); 
myDataSet .ReadXml(myXMLString); 
myDataGrid.DataSource = myDataSet ; 
myDataGrid.DataBind(); 
+0

DataSet.ReadXml需要一個文件名作爲參數不是XML字符串... – 2009-03-02 11:39:45

+0

是否有ParseXml版本? – Will 2009-03-02 11:44:00

0

您可以簡單地使用XmlDatasource對象作爲網格的數據源。這允許您設置文件和XPath,以便選擇數據源的XML。如果你願意,你可以使用<%#XPath =「blah」%>函數來明確地寫出你的數據。