C# 仅使用某些信息从xml文件填充树视图

C# 仅使用某些信息从xml文件填充树视图,c#,.net,xml,xml-parsing,treeview,C#,.net,Xml,Xml Parsing,Treeview,我有一个与此类似的xml文件 <items> <cla1> <type1> <unit>this is a unit</unit> <title>this is a title</title> <link></link> </type1> <t

我有一个与此类似的xml文件

<items>
    <cla1>
        <type1>
            <unit>this is a unit</unit>
            <title>this is a title</title>
            <link></link>
        </type1>

        <type2>
            <unit>this is a unit</unit>
            <title>this is a title</title>
            <link></link>
        </type2>
    </cla1>

        <cla2>
            <type1>
                <title>this is a title</title>
                <link></link>
            </type1>
        </cla2>

</items>
我知道我的xml结构可能会使这变得困难(只是新的),但是如果它使事情变得更容易,我不介意改变它。任何关于如何实现我所期待的建议都将不胜感激。这是我已经拥有的一个样本,对我来说,这似乎是过度和低效的,我有一种感觉,有一种更简单的方法可以做到这一点

//this code is in a loop going over certain nodes and
//keeps going like this until it reaches the end

if (!treeView1.Nodes.ContainsKey(cla))
{ treeView1.Nodes.Add(cla, cla); }

if (!treeView1.Nodes[cla].Nodes.ContainsKey(type))
{
treeView1.Nodes[cla].Nodes.Add(type, type);
}

谢谢

您可以尝试将TreeView与XMLDatasource绑定为此示例

这是您的xml,我使用title节点对其进行了一些修改

<?xml version="1.0" encoding="utf-8" ?>
<items>
    <cla1>
        <type1>
            <unit>this is a unit</unit>
            <title text="this is a titl1" link="/Default.aspx"></title>
            <link></link>
        </type1>
        <type2>
            <unit>this is a unit</unit>
            <title text="this is a titl2" link="/Default.aspx"></title>
            <link></link>
        </type2>
    </cla1>
    <cla2>
        <type1>
            <title text="this is a titl3" link="/Default.aspx"></title>
            <link></link>
        </type1>
    </cla2>
</items>

这是一个单位
这是一个单位
然后,您必须在aspx部件中生成绑定代码

<asp:XmlDataSource runat="server" id="xmlDataSource"  DataFile="App_Data/XMLFile.xml" />

    <asp:TreeView ID="TreeView1" runat="server"
        DataSourceID="xmlDataSource" >
        <DataBindings>
            <asp:TreeNodeBinding DataMember="title" TextField="text" NavigateUrlField="link"  />
        </DataBindings>
    </asp:TreeView>


仅用于绑定具有要绑定的属性的元素的部分,例如具有textlink属性的title元素。我将在树状视图中显示文本属性值,链接属性的作用类似于导航url,这样我的代码就变成这样了。对于您不想绑定属性的其他元素,您不必对它们做任何处理,树视图将显示为您的xml部门。

在您的示例中,在第二个块代码中,您有:
cla->type1->unit->title
,在下一个节点:
cla->type1->title
。这是有意的还是无意的?@Noctis这是有意的,尽管我可能应该提到“cla”将是两个值之一,而不是实际称为cla。因此,您希望使用一个类型良好的XML,然后以不同的方式组织它,这将涉及代码和跳转,以在树视图中显示它?我认为你的问题需要一些澄清和更多的例子…@Noctis我不必使用xml,我只是认为它可能会让事情变得更简单。我将添加一些图片来准确显示我想要的内容。我想您应该知道xml的格式与您想要的树不同。在xml中,标题是类型的子级,而在树中,标题是单位的子级。(以防万一你不知道)。否则,修改结构并不太难,但这是一件多么痛苦的事情。xml的结构最好与树的结构相同。这看起来很有希望,但是我不确定如何在windows窗体应用程序中实现这一点,你能帮忙吗?哦,对不起,我没有注意到你在windows应用程序上开发。有关Wiondows应用程序,请参见此链接中的
<asp:XmlDataSource runat="server" id="xmlDataSource"  DataFile="App_Data/XMLFile.xml" />

    <asp:TreeView ID="TreeView1" runat="server"
        DataSourceID="xmlDataSource" >
        <DataBindings>
            <asp:TreeNodeBinding DataMember="title" TextField="text" NavigateUrlField="link"  />
        </DataBindings>
    </asp:TreeView>