将xml文件的内容读入数据网格视图

时间:2010-04-13 12:06:14

标签: c#

我使用c#.net,windows表单应用程序。我有一个XML文件,其中包含两列和一些数据行。现在我必须将这些数据填充到数据网格视图中。即时通讯使用按钮,当我点击按钮时,会出现一个打开的对话框。我必须选择xml文件名,当我点击打开时,该xml文件的内容应该进入数据网格视图。我尝试过以下代码:

{
XmlDataDocument xmlDatadoc=new XmlDataDocument();
XmlDatadoc.Dataset.ReadXml(filename);
ds=xmlDatadoc.Dataset;
datagridview1.DataSource=ds.DefaultViewManager;
datagridview1.Datamember="language";
}

我的xml文件是:

<languages>
<language>
  <key> key1</key>
<value>value1</value>
</language>

<language>
  <key> key2</key>
<value>value2</value>
</language>
</languages>

它的工作正常,但只适用于“语言”。我还需要它来处理其他xml文件。

2 个答案:

答案 0 :(得分:0)

这个非常简单:如果要将其与不同的XML文件一起使用,请使用不同的Datamember属性,如下所示:

datagridview1.Datamember="taxes"; // or whatever

如果你期望你的DataGridView以某种方式神奇地知道你的XML中哪些元素用于行,那你就不走运了。

答案 1 :(得分:0)

你好我这是一个例子,xml必须是正确的格式,如果需要它的代码很容易正确,这只是想法的主要要点:

        XElement xElement = XElement.Load("file.xml");
        DataTable dTable = new DataTable();
        // keys must have unique name
        xElement.Elements().First().Elements().ToList()
            .ForEach(element=>dTable.Columns.Add(element.Name.ToString()));

        xElement.Elements().ToList().ForEach((item) =>
            {
                // fileds must place in the same order
                // but you can correct it if you want
                var itemToAdd = new List<string>();

                item.Elements().ToList().ForEach(field => itemToAdd.Add(field.Value));
                dTable.Rows.Add(itemToAdd.ToArray()); 
            }
        );

        dataGridView1.DataSource = dTable;