Синтаксический анализ XML и просмотр дерева - PullRequest
0 голосов
/ 21 ноября 2011

парсинг 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;
    }
}

Как мне теперь ввести узлы, чтобы получить древовидное представление файла 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>

но ничего не появляется .... просто я не понимаю, как добавить узлы, я думаю ...

1 Ответ

2 голосов
/ 21 ноября 2011

Вы должны добавить узлы в коде так:

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);
}

Кстати: я бы использовал x:Name Свойство для именования элементов в Xaml, иногда возникают проблемы с кодом, когда вы используете только Name

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...