XML-строка для DataTable в C # - PullRequest
       15

XML-строка для DataTable в C #

20 голосов
/ 18 октября 2011

Как преобразовать строку XML в DataTable в c #?

Я попробовал следующий код:

    public DataTable stam()
    {
        string xmlData = "<Names><Name>a</Name><Name>b</Name><Name>c</Name><Name>d</Name></Names>";

        XElement x = XElement.Parse(xmlData);

        DataTable dt = new DataTable();

        XElement setup = (from p in x.Descendants() select p).First();
        foreach (XElement xe in setup.Descendants()) // build your DataTable
            dt.Columns.Add(new DataColumn(xe.Name.ToString(), typeof(string))); // add columns to your dt

        var all = from p in x.Descendants(setup.Name.ToString()) select p;
        foreach (XElement xe in all)
        {
            DataRow dr = dt.NewRow();
            foreach (XElement xe2 in xe.Descendants())
                dr[xe2.Name.ToString()] = xe2.Value; //add in the values
            dt.Rows.Add(dr);
        }
        return dt;

    }

и возвращает пустую таблицу данных.

1 Ответ

54 голосов
/ 18 октября 2011
public DataTable stam()    
{
    StringReader theReader = new StringReader(xmlData);
    DataSet theDataSet = new DataSet();
    theDataSet.ReadXml(theReader);

    return theDataSet.Tables[0];
}

Вы можете использовать StringReader, чтобы загрузить его в DataSet. Оттуда таблица с первым индексом будет содержать DataTable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...