xml в datatable - PullRequest
       0

xml в datatable

0 голосов
/ 16 января 2012

Возникли проблемы с импортом xml в таблицу данных, чем при просмотре в списке.

<Players>
  <Player>
    <Name>Joe</Name>
    <Kills>352</Kills>
    <Death>608</Death>
  </Player>
  <Player>
    <Name>^1dR.eViL</Name>
    <Kills>8224</Kills>
    <Death>4592</Death>
  </Player>
<Players>

Теперь, чтобы получить таблицу, я сделал следующее:

public DataTable getTable()
{
    string file = @"E:\...\Players.xml";
    DataSet ds = new DataSet();
    ds.ReadXml(file);
    return ds.Tables["Players"];

}

Чтобы сгенерировать представление списка, я сделал следующее:

public void generateScoreBoard(DataTable dt)
        {
            foreach (DataRow row in dt.Rows)
            {
                ListViewItem item = new ListViewItem(row[0].ToString());
                for (int i = 1; i < dt.Columns.Count; i++)
                {
                    item.SubItems.Add(row[i].ToString());
                }
                lvScoreBoard.Items.Add(item);
            }
        }

Мне кажется, что на один уровень выше не хватает данных, вводимых в таблицу данных, и что отсутствие указания столбцов до того, как это произойдет, приводит к тому, что столбцы не создаются.

Ответы [ 2 ]

1 голос
/ 16 января 2012

Если вам нужно решить форматирование XML, самый простой способ - создать DataTable с некоторыми данными и экспортировать их в XML. Тогда у вас будет формат, который вы можете прочитать обратно.

Я делаю это здесь

0 голосов
/ 16 января 2012

Я не на 100% уверен в том, что ваш вопрос, но, глядя на ваш код, ваша проблема может быть связана с тем, что ваш метод getTable () никогда не вернет DataTable с именем «Players» (обратите внимание на множественное число) - «Players» - это имя DataSet, а «Player» - это имя DataTable.

Если вы измените имя возвращаемой DataTable с «Players» на «Player», у вас все будет хорошо.

Пример:

public DataTable getTable()
{
    string file = @"E:\...\Players.xml";
    DataSet ds = new DataSet();
    ds.ReadXml(file);
    return ds.Tables["Player"]; // The name of the table in the dataset is "Player"

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