我使用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 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="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>
<StructElement Name="Number">
<List/>
</StructElement>
</List>
</StructDocument>
,我得到以下内容:
即。现在我看到了所需的行为,所有的xml元素都在屏幕上。我想问一下如何在不改变xml的情况下实现这个目标?
答案 0 :(得分:3)
我尝试使用您的XML文件在一个小样本中重现您的场景,并且在两种情况下(使用两个XML文件)我得到异常“名为'List'的列已经属于此DataTable:无法设置嵌套表名称为同名。“(可能是因为我的场景有点不同)
请查看附带的示例,如果您认为我没有重现您的方案,请随时修改此示例并将其还原给我。我很乐意为你研究它。
同时最好在我们的网站http://www.infragistics.com/community/forums/上发布您的问题。我们很乐意为您提供帮助。
以下是我的测试样本的结果
这是我的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>
和源代码
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();
}
}