Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#使用数据集将复杂类型的xml文件读入datagridview_Xml_Types_Dataset_Xsd_Complextype - Fatal编程技术网

C#使用数据集将复杂类型的xml文件读入datagridview

C#使用数据集将复杂类型的xml文件读入datagridview,xml,types,dataset,xsd,complextype,Xml,Types,Dataset,Xsd,Complextype,我有一个这样的代码,它将xml文件读入数据集,然后在datagridview中显示数据。 我在谷歌上搜索了一下,发现我的数据集可以读取xml,但只能读取第一个“级别”的元素 对于复杂类型来说,它还不够深入。但是,它会将复杂类型或“在线”数据保存到数据集中的下一个表中。xml文件位于一个数据集中,但表会根据元素的复杂类型进行拆分 有没有办法把这些表合并成一个大表,这样我就不需要一个数字上下值来在表视图之间切换 对于我的程序,我试图让用户能够更轻松地操作这些xml文件。有一张大桌子比有一堆小桌子要好

我有一个这样的代码,它将xml文件读入数据集,然后在datagridview中显示数据。
我在谷歌上搜索了一下,发现我的数据集可以读取xml,但只能读取第一个“级别”的元素

对于复杂类型来说,它还不够深入。但是,它会将复杂类型或“在线”数据保存到数据集中的下一个表中。xml文件位于一个数据集中,但表会根据元素的复杂类型进行拆分

有没有办法把这些表合并成一个大表,这样我就不需要一个数字上下值来在表视图之间切换

对于我的程序,我试图让用户能够更轻松地操作这些xml文件。有一张大桌子比有一堆小桌子要好得多

代码如下:

    string filename = Address.Text;
    dataGridView1.AutoGenerateColumns = true;
    DataSet dataSet1 = new DataSet("DEFAULT");
    dataSet1.ReadXml(filename, XmlReadMode.Auto);
    bindingSource1.DataSource = dataSet1.Tables[(int)tablenumber.value].DefaultView;
    dataGridView1.DataSource = bindingSource1;
    richTextBox1.Text = filename + " loaded.";
    label2.Text = "File Open: " + filename;
以此类推,但tablenumber一开始应该是0。这只是数据集在读取xml文件时拥有的“第一个”表。此外,我有一个与xml文件配套的模式。我是否也需要读取模式,以便它知道存在复杂类型,并根据模式进行读取


(.NET3.5SP1,VisualStudio2008c#)

这个问题通过使用一个for循环来解决,该循环迭代数据集中的每个表并合并它。这产生了一个更大的datatable,它适合datagridview,而与模式无关。有空单元格,这是意料之中的,但这正是我想要的:一个巨大的数据表

    DataTable dt = new DataTable();
    dt = dataSet1.Tables[0];
    int i;
    for(i = 1; i < dataSet1.Tables.Count; i++)
    {
        dt.Merge(dataSet.Tables[i]);
    }
DataTable dt=newdatatable();
dt=数据集1.表[0];
int i;
对于(i=1;i
是我使用的代码。=)


编辑:更多信息(限制,示例)

这个问题通过使用for循环来解决,该循环迭代数据集中的每个表并合并它。这产生了一个更大的datatable,它适合datagridview,而与模式无关。有空单元格,这是意料之中的,但这正是我想要的:一个巨大的数据表

    DataTable dt = new DataTable();
    dt = dataSet1.Tables[0];
    int i;
    for(i = 1; i < dataSet1.Tables.Count; i++)
    {
        dt.Merge(dataSet.Tables[i]);
    }
DataTable dt=newdatatable();
dt=数据集1.表[0];
int i;
对于(i=1;i
是我使用的代码。=)

编辑:更多信息(限制,示例)