仅使用一些信息从xml文件填充树视图

时间:2013-11-09 01:07:26

标签: 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>

        <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>

使用此信息我希望将树视图控件填充为如下所示:

(无法添加图片,所以这里是链接) http://i.imgur.com/cVRDhDR.png

name of cla
 |____type1 value
 |  |____unit value
 |      |_____title value
 |____type2 value
 |  |____unit value
 |      |_____title value
 |
name of cla
 |____type1 value
 |  |____title value
 |      

据我所知,我的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);
}

由于

1 个答案:

答案 0 :(得分:0)

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

这是你用标题节点修改了一下的xml

<?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>

仅绑定具有要绑定属性的元素的部分,例如标题元素,其具有文本链接属性。我会将文本属性值显示在树视图中,链接属性就像导航URL一样,所以我的代码就像那样。对于您不想绑定属性的其他元素,您不必对它们执行任何操作,树视图将显示为您的xml部门。