Xml 基础设施。超树奇怪的行为

Xml 基础设施。超树奇怪的行为,xml,data-binding,infragistics,Xml,Data Binding,Infragistics,我使用UltraTree方法SetDataBinding来显示xml树结构。Xml是这样的: <?xml version="1.0" encoding="utf-8"?> <StructDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="Document"> <List>

我使用UltraTree方法SetDataBinding来显示xml树结构。Xml是这样的:

<?xml version="1.0" encoding="utf-8"?>
<StructDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="Document">
<List>  
    <StructElement Name="Number">
        <List/>
    </StructElement>    
    <StructElement Name="Author">
        <List>
            <StructElement Name="Name">
                <List>
                    <StructElement Name="FullName">
                        <List/>
                    </StructElement>
                    <StructElement Name="Adress">
                        <List/>
                    </StructElement>
                    <StructElement Name="Email">
                        <List/>
                    </StructElement>
                </List>
            </StructElement>
        </List>
    </StructElement>
</List>
</StructDocument>

然后我得到了以下结果:

正如您看到的,缺少“Name”元素子元素的列表。但当我像这样更改xml时(只需更改“Number”和“Author”元素的顺序):


,我得到以下信息:


也就是说,现在我看到了所需的行为,所有xml元素都出现在屏幕上。我想问一下如何在不更改xml的情况下实现这一点?

我尝试使用xml文件在一个小样本中重现您的场景,在两种情况下(使用两个xml文件),我都会遇到异常“名为“List”的列已属于此数据表:无法将嵌套表名设置为相同的名称。”(可能是因为我的情况有点不同)

请看附件中的示例,如果您认为我没有复制您的场景,请随意修改此示例并将其还原给我。我很乐意为您研究

同时,最好将您的问题发布在我们的网站上。我们将很乐意为您提供帮助

这是我的测试样本的结果

这是我的XML文件

<?xml version="1.0" encoding="utf-8"?>
<StructDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="Document" Description="">
  <StructElement Name="Number" Description ="Number of books 100">
  </StructElement>
  <StructElement Name="Author">
    <StructElement Name="Name" Description ="Stephen King">
      <StructElement Name="FullName" Description ="Stephen King full name">
      </StructElement>
      <StructElement Name="Adress" Description ="Stephen King address">
      </StructElement>
      <StructElement Name="Email" Description ="Stephen King email">
      </StructElement>
    </StructElement>
  </StructElement>
  <StructElement Name="Number" Description ="Number of books 20">
  </StructElement>
  <StructElement Name="Author">
    <StructElement Name="Name" Description ="George R. R. Martin">
      <StructElement Name="FullName" Description ="George R. R. Martin full name">
      </StructElement>
      <StructElement Name="Adress" Description ="George R. R. Martin address">
      </StructElement>
      <StructElement Name="Email" Description ="George R. R. Martin email">
      </StructElement>
    </StructElement>
  </StructElement>
</StructDocument>

我建议在Infragistics论坛上发布这篇文章,以查看行为是否符合预期,以及原因:谢谢,问题在于我的绑定。我从xml创建了自己的数据结构(如:BindingList)。我的案例与此非常匹配:。
<?xml version="1.0" encoding="utf-8"?>
<StructDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="Document" Description="">
  <StructElement Name="Number" Description ="Number of books 100">
  </StructElement>
  <StructElement Name="Author">
    <StructElement Name="Name" Description ="Stephen King">
      <StructElement Name="FullName" Description ="Stephen King full name">
      </StructElement>
      <StructElement Name="Adress" Description ="Stephen King address">
      </StructElement>
      <StructElement Name="Email" Description ="Stephen King email">
      </StructElement>
    </StructElement>
  </StructElement>
  <StructElement Name="Number" Description ="Number of books 20">
  </StructElement>
  <StructElement Name="Author">
    <StructElement Name="Name" Description ="George R. R. Martin">
      <StructElement Name="FullName" Description ="George R. R. Martin full name">
      </StructElement>
      <StructElement Name="Adress" Description ="George R. R. Martin address">
      </StructElement>
      <StructElement Name="Email" Description ="George R. R. Martin email">
      </StructElement>
    </StructElement>
  </StructElement>
</StructDocument>
 private void Form1_Load(object sender, EventArgs e)
    {
        try
        {
            DataSet ds = new DataSet();
            ds.ReadXml("..\\..\\XMLFile1.xml");
            ultraTree1.DataSource = ds.Tables[0];
            ultraTree1.ExpandAll();
            ultraTree1.ColumnSettings.AutoFitColumns = Infragistics.Win.UltraWinTree.AutoFitColumns.ResizeAllColumns;
            ultraTree1.ColumnSettings.ColumnSets[0].Columns[0].Visible = false;

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            this.Close();
        }
    }