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

时间:2019-04-25 09:40:01

标签: c# string datatable

我想知道如何将该字符串转换为数据表。这是我的字符串:

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

我创建了带有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);

如何将字符串转换为DataTable

1 个答案:

答案 0 :(得分:3)

您发布的字符串看起来很像xml,但是它不是有效的xml。它需要一个根元素(并删除,逗号)。我在下面更新了:

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的方法ReadXml()

  

...提供了一种仅读取数据或同时读取两者的方法   数据和模式从XML文档转换为数据集...

知道了这一点,现在您可以创建一个DataSet并使用StringReader来将Xml直接读入DataSet。

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

然后,您需要做的就是从数据集中提取数据:

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

// output
Footer: Digital Number

如果您只想使用DataTable:

 DataTable dt = ds.Tables[0];

请参阅此fiddle