我有一个XML文件,如下所示
<root>
<child1>
<grandchild1>
<greatgrandchild1>
</greatgrandchild1>
<greatgrandchild2>
</greatgrandchild2>
...
</grandchild1>
<grandchild2>
</grandchild2>
<grandchild3>
</grandchild3>
...
</child1>
<child2>
<grandchild1>
</grandchild1>
<grandchild2>
</grandchild2>
<grandchild3>
</grandchild3>
...
</child2>
<child3>
<grandchild1>
</grandchild1>
<grandchild2>
</grandchild2>
<grandchild3>
</grandchild3>
...
</child3>
...
</root>
每个子节点都有不同的名称。我需要以下列方式显示此XML:
每个子节点都显示为Expander
。该子节点的所有孙子都放在该扩展器内。每个孙子及其子孙都应该分组,并且应该有背景颜色。下一个孙子及其子女应该有另一种颜色背景。
整个数据有两列。因此,选择显示此数据的控件应该能够支持多列。
我在想DataGrid
。但我无法使用其内置功能,因为我无法进行数据绑定。我需要以编程方式将项添加到DataGrid
。请让我知道如何解决这个问题。任何帮助是极大的赞赏。
答案 0 :(得分:1)
如Ben所述清理XML之后 - 我发现处理分层XML数据的最简单方法是将其加载到DataSet对象(DataSet.ReadXML())。
然后,您可以将DataSet和您想要的特定DataTable绑定到网格控件。
答案 1 :(得分:0)
这真的不是XML。每个元素都是不同的类型,因为每个元素的名称不同。有没有办法让您的数据进入格式正确的XML?例如:
<root>
<child name="name1">
<grandchild name="name11">
<greatgrandchild name="name111"/>
<greatgrandchild name="name112"/>
</grandchild>
<grandchild name="name12"/>
</child>
<child name="name2">
<grandchild name="name21"/>
<grandchild name="name22"/>
</child>
</root>
注意这是一系列具有属性和子元素的相同类型的元素。在w3schools有一套很好的xml教程。融为一体
如果您可以将数据转换为正确的XML,则可以非常轻松地显示数据。您可以使用xml数据提供程序并直接绑定到xml,您可以使用xml序列化轻松地将数据加载到一系列对象和集合中,您可以将其加载到XmlDocument中并以这种方式对其进行操作。如果您自己编写这个xml,那么您可能花费更少的时间重新格式化数据,而不是试图找到将奇怪的xml粘贴到程序中的方法。
修复xml后,这是另一篇类似问题Fill datagrid or listview from XML file的帖子。