2

我有这个 XML:

<container_1 attr1="..." attr2="..." attr3="...">
  <rekord_1>
    <type_1 attr1="..." attr2="..." ... />
    <type_2 attr1="..." attr2="..." ... /> 
  </rekord_1>
  <rekord_2>... </rekord_2>
  .
  .
  <rekord_N> ... </rekord_N>
</container_1>

我可以解析我想要的方式并在控制台应用程序中显示它(使用XMLElementsXMLNodeLists几个循环),但我想制作一个带有 GUI 和表格视图的应用程序。我的表单应用程序可以读取 XML,但它现在只能处理 1 个标签。例如,如果我得到container_1标签,它container_1本身只输出 's 属性,但我也想container_1在表格视图下显示记录。

我想让它像控制台中的旧程序一样可以查看。

如何从我的 XML 中取出数据,以便能够使用元素/属性?因为我想在表格视图中设置它们的位置。我应该阅读哪些文档?还是有一些对我有用的例子?

已编辑(8 月 20 日):这是代码的主要部分:

private void button1_Click(object sender, EventArgs e)
    {
        Stream input=null;
        OpenFileDialog dialog = new OpenFileDialog();
        openFileDialog1.InitialDirectory = "C:/";
        openFileDialog1.Filter = "xml file | *.xml";
        openFileDialog1.FilterIndex = 2;
        openFileDialog1.RestoreDirectory = true;

        if (openFileDialog1.ShowDialog() == DialogResult.OK) {
            try
            {
                if ((input = openFileDialog1.OpenFile()) != null)
                {
                    using (input)
                    {
                        XmlReader xmlFile = XmlReader.Create(input, new XmlReaderSettings());
                        DataSet dataSet = new DataSet();
                        dataSet.ReadXml(xmlFile);
                        DataSet containers = new DataSet();
                        dataGridView1.DataSource = dataSet.Tables[tag];
                        xmlFile.Close();
                    }
                }
            }
            catch (Exception ex) {
                MessageBox.Show("ERROR");
            }
        }
    }

如果我的标签是容器或 rekord,则此函数可以很好地显示并进行以下输出: 输出

但是我不能显示container1+它的rekords,container2+它的rekords等等,只能同时显示所有容器或所有rekords。

4

1 回答 1

0

听起来您想要做的是将 XML 拉入数据集,然后将该数据集提供给 Gridview。

看起来有人已经在 Stack Exchange 上问过这个问题

使用 c# 将项目从 xml 填充到 Datagridview 的任何方式

添加

你所拥有的是一个DataSetwith multiple DataTables。一次DataGridView只能显示一个DataTable

当你编码时

dataGridView1.DataSource = dataSet.Tables[tag];

container_1tag您拉回您的数据集的container_1

我建议您查看DataGridViewDataSetDataTable的 MSDN,看看这是否真的适合您。

也许还可以查看C# DataGridView 教程

它不会受伤。

于 2013-08-07T22:04:45.077 回答