C# XML解析与treeview

C# XML解析与treeview,c#,.net,wpf,xml,treeview,C#,.net,Wpf,Xml,Treeview,解析xml文件: XmlTextReader reader = new XmlTextReader(fileName); while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: // The node is an element. Console.Write("<" + reader.Name); Console.

解析xml文件:

XmlTextReader reader = new XmlTextReader(fileName);
while (reader.Read())
{
    switch (reader.NodeType)
    {
        case XmlNodeType.Element: // The node is an element.
            Console.Write("<" + reader.Name);
            Console.WriteLine(">");
            break;
        case XmlNodeType.Text: //Display the text in each element.
            Console.WriteLine(reader.Value);
            break;
        case XmlNodeType.EndElement: //Display the end of the element.
            Console.Write("</" + reader.Name);
            Console.WriteLine(">");
            break;
    }
}
XmlTextReader=新的XmlTextReader(文件名);
while(reader.Read())
{
开关(reader.NodeType)
{
case XmlNodeType.Element://节点是一个元素。
控制台。写(“”);
打破
case XmlNodeType.Text://显示每个元素中的文本。
Console.WriteLine(reader.Value);
打破
case XmlNodeType.EndElement://显示元素的结尾。
控制台。写(“”);
打破
}
}
现在如何输入节点以获取正在解析的xml文件的树视图?这就是我迄今为止所做的:

<TreeView Margin="177,61" Name="myTreeView" ItemsSource="{Binding XPath=XmlNodeType.Element}" >
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding XPath=XmlNodeType.Element}">
            <TextBlock Text="{Binding XPath=XmlNodeType.Text}" />
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>


但是什么都没有出现。。。。只是不知道如何添加节点我猜

您必须在代码隐藏中添加节点,如下所示:

var newNode = new TreeViewItem
{
    Header = "New Node"
};
myTreeView.Items.Add(newNode);
// Find the node you want to have as parent.
var parentNode = myTreeView.Items.Cast<TreeViewItem>().FirstOrDefault(item => item.Header = "Parent Node");
if (parentNode != null)
{
    var newNode = new TreeViewItem
    {
        Header = "New Node"
    };
    parentNode.Items.Add(newNode);
}
这将在树的顶部添加一个节点。如果要构建层次结构,必须在适当位置添加节点,如下所示:

var newNode = new TreeViewItem
{
    Header = "New Node"
};
myTreeView.Items.Add(newNode);
// Find the node you want to have as parent.
var parentNode = myTreeView.Items.Cast<TreeViewItem>().FirstOrDefault(item => item.Header = "Parent Node");
if (parentNode != null)
{
    var newNode = new TreeViewItem
    {
        Header = "New Node"
    };
    parentNode.Items.Add(newNode);
}
//查找要作为父节点的节点。
var parentNode=myTreeView.Items.Cast().FirstOrDefault(item=>item.Header=“父节点”);
if(parentNode!=null)
{
var newNode=newtreeviewItem
{
Header=“新节点”
};
parentNode.Items.Add(newNode);
}

顺便说一句:我会使用
x:Name
属性来命名Xaml中的元素,有时当您仅使用
Name

时,代码中会出现一些问题,哇,这太酷了!谢谢你的帮助。在创建层次结构“item.Header=”Parent Node“)时,这一部分似乎有问题。此外,我不太理解这一行。你能给我解释一下吗?这只是一个找到父节点的示例。当您“遍历”xml文件并添加了一个节点时,所有子节点都已经有了该父节点。在我发布的行中,执行以下操作(作为示例!):它获取所有项目,将它们强制转换到TreeViewItem并搜索第一个节点,即设置为标题的“父节点”。