简体   繁体   English

使用C#将字符串转换为数据表

[英]Convert string to datatable with c#

I want to know how to convert this string to datatable. 我想知道如何将此字符串转换为数据表。 This string is my string: 这个字符串是我的字符串:

"<data name=\"Footer\" xml:space=\"preserve\"> <value>Digital Number</value> </data>,<data name=\"lblDisplay\" xml:space=\"preserve\"> <value>Hien thi</value> </data>"

I created table with 2 column named "Name" and "Value": 我创建了带有名为“名称”和“值”的2列的表:

DataTable tbl = new DataTable();
DataColumn column;
DataRow row;
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "Name";
tbl.Columns.Add(column);

column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "Value";
tbl.Columns.Add(column);

How can I convert the string to DataTable ? 如何将字符串转换为DataTable

The string you posted looks a lot like xml, but it is not valid xml. 您发布的字符串看起来很像xml,但是它不是有效的xml。 It needs a root element (and remove the , comma). 它需要一个根元素(和删除,逗号)。 I've updated below: 我在下面更新了:

var xmlString = @"<?xml version=""1.0""?>
                  <rootData>
                      <data name=""Footer"" xml:space=""preserve""> 
                          <value>Digital Number</value> 
                      </data>
                      <data name=""lblDisplay"" xml:space=""preserve"">
                          <value>Hien thi</value> 
                      </data>
                  </rootData>";

DataSet has a method ReadXml() which DataSet有一个方法ReadXml()

... provides a way to read either data only, or both data and schema into a DataSet from an XML document... ...提供了一种仅从XML文档中读取数据,或将数据和架构两者都读取到DataSet中的方法...

Knowing that, now you can create a DataSet and use a StringReader to read the Xml straight into the DataSet. 知道了这一点,现在您可以创建一个DataSet并使用StringReader将Xml直接读入DataSet。

var ds = new DataSet();
using (var reader = new StringReader(xmlString))
{
    ds.ReadXml(reader);
}

Then, all you need to do is extract the data from the DataSet: 然后,您需要做的就是从数据集中提取数据:

Console.WriteLine($"{ds.Tables[0].Rows[0]["name"]}: {ds.Tables[0].Rows[0]["value"]}");

// output
Footer: Digital Number

If you want a DataTable just do: 如果您想要一个DataTable,请执行以下操作:

 DataTable dt = ds.Tables[0];

See this fiddle . 看到这个小提琴

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM