Я пытаюсь написать приложение winforms, которое отображает все открытые узлы XML-файлов (и только его узлы) в TreeView и отображает атрибуты выбранного узла отдельно (по выбранному i означает выбранный в TreeView) (отображается в списке, например). Я попытался добиться этого, используя следующий код, но он выдает исключение: «family/parent» имеет недопустимый токен.C# получить атрибуты XElement из XDocument с помощью пути treeview
private void TView__AfterSelect(object sender, TreeViewEventArgs e)
{
var doc = XDocument.Load(businessLayer.InputFilepath);
XElement myElement = doc.Root.XPathSelectElement(TView_.SelectedNode.FullPath);
try
{
foreach (var attribute in myElement.Attributes())
{
listBox1.Items.Add(attribute.Value);
}
}
catch (Exception)
{
}
}
Я использую следующий XML-файл:
<?xml version="1.0" encoding="utf-8" ?>
<family>
<parent>
<id>grandfather</id>
<parent>
<id>father</id>
<parent>
<id>brother</id>
<child>
<id>niece</id>
</child>
</parent>
<parent>
<is>me</is>
<child>
<id>son</id>
</child>
<child>
<id>dauhter</id>
</child>
</parent>
<child>
<id>sister</id>
</child>
</parent>
<parent>
<id>uncle</id>
<parent>
<id>cousin sister</id>
<child>
<id>second cousin</id>
</child>
</parent>
<child>
<id>cousin brother</id>
</child>
</parent>
</parent>
</family>
Я не имею ни малейшего понятия о том, что еще я мог бы попробовать, так что любая помощь будет оценена.
Почему вы выполняете итерацию по атрибутам, если у вас нет каких-либо атрибутов как часть элементов вашего XML? Вероятно, он вернет 'NULL'. Похож на ошибку в дизайне XML. – zx485
Я решил исправить это, но как-то сумел забыть об этом. Благодарю. –