2011-10-17 48 views
1

我試圖從數據庫中檢索5列,其中一種是XML類型。在返回數據集時將其視爲字符串。我需要將這些值提取爲xml並綁定到另一個數據集。如何將字符串值解析爲xml並將其綁定到數據集

例如:如果我的查詢返回5列到數據集,一列是xml。我需要提取該值並將其作爲xml存儲到另一個數據集。

我試圖使用dstDataset.Tables[0][3].toString();它返回整個xml作爲字符串。現在我需要解析爲XML並綁定到另一個數據集。

我希望你人們有我的問題。

+1

所以,爲了確保我們理解正確:您想提取一些XML,並將整個XML集「按原樣」插入到另一個數據集中? (即,不需要從XML中提取單獨的數據片段?) – Kjartan

+0

yup。正確。那是我想要的。 –

回答

1

看看下面的代碼:

DataSet dataSet = new DataSet(); 
DataTable dataTable = new DataTable("table1"); 
dataTable.Columns.Add("col1", typeof(string)); 
dataSet.Tables.Add(dataTable); 

string xmlData = "<XmlDS><table1><col1>Value1</col1></table1><table1><col1>Value2</col1></table1></XmlDS>"; 

System.IO.StringReader xmlSR = new System.IO.StringReader(xmlData); 

dataSet.ReadXml(xmlSR, XmlReadMode.IgnoreSchema); 

如果你與你的數據從替換列XMLDATA和確保綱要正確這應該工作。

0

也許你可以使用:

using System.Xml.Linq; 
(...) 
XDocument xmlXDoc = XDocument.Parse(dstDataset.Tables[0][3].toString()); 

然後你就可以得到XML有:

xmlXDoc.ToString() 

或者,如果你喜歡它,不進行格式化(縮進XML):

xmlXDoc.ToString(SaveOptions.DisableFormatting) 

有關LINQ to XML的更多信息:http://msdn.microsoft.com/en-us/library/bb387044.aspx

+0

XDocument xmlXDoc = XDocument.Parse(dstSection.Tables [0] [3] .toString());這條線給我錯誤。說你不能用[]表達式來應用索引'System.Data.DataDatable –

+0

奇怪的......因爲這給了你一個字符串,就像你在你的問題中寫的:'dstDataset.Tables [0] [3]。 toString();',那麼'XDocument.Parse()'應該能夠解析該字符串,如果它包含有效的XML。你可以嘗試首先將它定義爲一個變量: 'String myXml = dstDataset.Tables [0] [3] .toString();',然後將其作爲參數傳遞,以確保你確實知道你期待從DataTable。 – Kjartan