我試圖從數據庫中檢索5列,其中一種是XML類型。在返回數據集時將其視爲字符串。我需要將這些值提取爲xml並綁定到另一個數據集。如何將字符串值解析爲xml並將其綁定到數據集
例如:如果我的查詢返回5列到數據集,一列是xml。我需要提取該值並將其作爲xml存儲到另一個數據集。
我試圖使用dstDataset.Tables[0][3].toString();
它返回整個xml作爲字符串。現在我需要解析爲XML並綁定到另一個數據集。
我希望你人們有我的問題。
我試圖從數據庫中檢索5列,其中一種是XML類型。在返回數據集時將其視爲字符串。我需要將這些值提取爲xml並綁定到另一個數據集。如何將字符串值解析爲xml並將其綁定到數據集
例如:如果我的查詢返回5列到數據集,一列是xml。我需要提取該值並將其作爲xml存儲到另一個數據集。
我試圖使用dstDataset.Tables[0][3].toString();
它返回整個xml作爲字符串。現在我需要解析爲XML並綁定到另一個數據集。
我希望你人們有我的問題。
看看下面的代碼:
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和確保綱要正確這應該工作。
也許你可以使用:
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
XDocument xmlXDoc = XDocument.Parse(dstSection.Tables [0] [3] .toString());這條線給我錯誤。說你不能用[]表達式來應用索引'System.Data.DataDatable –
奇怪的......因爲這給了你一個字符串,就像你在你的問題中寫的:'dstDataset.Tables [0] [3]。 toString();',那麼'XDocument.Parse()'應該能夠解析該字符串,如果它包含有效的XML。你可以嘗試首先將它定義爲一個變量: 'String myXml = dstDataset.Tables [0] [3] .toString();',然後將其作爲參數傳遞,以確保你確實知道你期待從DataTable。 – Kjartan
所以,爲了確保我們理解正確:您想提取一些XML,並將整個XML集「按原樣」插入到另一個數據集中? (即,不需要從XML中提取單獨的數據片段?) – Kjartan
yup。正確。那是我想要的。 –