C# 如何将字符串值解析为xml并将其绑定到数据集

C# 如何将字符串值解析为xml并将其绑定到数据集,c#,xml,dataset,C#,Xml,Dataset,我试图从数据库中检索5列,其中一列是XML类型。返回数据集时,它被视为字符串。我需要将这些值提取为xml并绑定到另一个数据集 例如:如果我的查询向dataset返回5列,则其中一列是xml。我需要提取这些值并将其作为xml存储到另一个数据集 我尝试使用dstDataset.Tables[0][3].toString()它以字符串形式返回整个xml。现在我需要解析为xml并绑定到另一个数据集 我希望你能理解我的问题 也许您可以使用: using System.Xml.Linq; (...) XDo

我试图从数据库中检索5列,其中一列是XML类型。返回数据集时,它被视为字符串。我需要将这些值提取为xml并绑定到另一个数据集

例如:如果我的查询向dataset返回5列,则其中一列是xml。我需要提取这些值并将其作为xml存储到另一个数据集

我尝试使用
dstDataset.Tables[0][3].toString()它以字符串形式返回整个xml。现在我需要解析为xml并绑定到另一个数据集

我希望你能理解我的问题

也许您可以使用:

using System.Xml.Linq;
(...)
XDocument xmlXDoc = XDocument.Parse(dstDataset.Tables[0][3].toString());
然后,您可以通过以下方式获取XML:

xmlXDoc.ToString()
或者,如果您希望它不带格式(缩进XML):

关于LINQ to XML的更多信息:

也许您可以使用:

using System.Xml.Linq;
(...)
XDocument xmlXDoc = XDocument.Parse(dstDataset.Tables[0][3].toString());
然后,您可以通过以下方式获取XML:

xmlXDoc.ToString()
或者,如果您希望它不带格式(缩进XML):


有关LINQ to 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);
DataSet数据集=新数据集();
DataTable=新数据表(“表1”);
dataTable.Columns.Add(“col1”,typeof(string));
dataSet.Tables.Add(dataTable);
字符串xmlData=“Value1Value2”;
System.IO.StringReader xmlSR=新的System.IO.StringReader(xmlData);
ReadXml(xmlSR,XmlReadMode.IgnoreSchema);

如果将xmlData替换为列中的数据,并确保架构正确,则应该可以执行此操作。

查看以下代码:

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);
DataSet数据集=新数据集();
DataTable=新数据表(“表1”);
dataTable.Columns.Add(“col1”,typeof(string));
dataSet.Tables.Add(dataTable);
字符串xmlData=“Value1Value2”;
System.IO.StringReader xmlSR=新的System.IO.StringReader(xmlData);
ReadXml(xmlSR,XmlReadMode.IgnoreSchema);

如果用列中的数据替换xmlData,并确保模式正确,这应该会起作用。

因此,为了确保我们正确理解:您想提取一些XML,并将整个XML集“按原样”插入另一个数据集中?(也就是说,不需要从XML中提取单独的数据片段?)因此,为了确保我们正确理解:您想提取一些XML,并“按原样”将整个XML集插入另一个数据集中吗?(即,不需要从XML中提取单个数据片段?)XDocument xmlXDoc=XDocument.Parse(dstSection.Tables[0][3].toString());这一行给了我错误。正在说明无法对[]类型为“System.Data.DataListRange”的表达式应用索引。。。假设这会给您一个字符串,正如您在问题中所写:
dstDataset.Tables[0][3].toString()XDocument.Parse()
应该能够解析该字符串。您可以先尝试将其定义为变量:
String myXml=dstDataset.Tables[0][3].toString(),然后将其作为参数传递,以确保确实从DataTable.XDocument xmlXDoc=XDocument.Parse(dstSection.Tables[0][3].toString()中获得了预期的结果;这一行给了我错误。正在说明无法对[]类型为“System.Data.DataListRange”的表达式应用索引。。。假设这会给您一个字符串,正如您在问题中所写:
dstDataset.Tables[0][3].toString()XDocument.Parse()
应该能够解析该字符串。您可以先尝试将其定义为变量:
String myXml=dstDataset.Tables[0][3].toString(),然后将其作为参数传递,以确保确实从DataTable中获得了预期的结果。