Например, следующий XML-документ:
<?xml version="1.0"?>
<UrdaObject>
<Date>
<Year>2011</Year>
<Month>5</Month>
<Day>18</Day>
<Hours>8</Hours>
<Minutes>47</Minutes>
<Seconds>36</Seconds>
</Date>
<random_value>24</random_value>
</UrdaObject>
И понимание child::node() - Selects all child nodes of the current node
как мне создать XPath
(начиная с корня), который бы выделил все дочерние узлы, КРОМЕ текста,комментарии и другие вещи, которые НЕ являются элементами .Например, при использовании этого кода для создания древовидного представления в WPF:
// x is some XmlDocument, xmlTree is my WPF TreeView
XmlDataProvider provider = new XmlDataProvider();
provider.Document = x;
Binding binding = new Binding();
binding.Source = provider;
binding.XPath = "child::node()";
xmlTree.SetBinding(TreeView.ItemsSourceProperty, binding);
Как мне создать свой оператор XPath, чтобы создать древовидное представление с узлами, идущими до конца и останавливающимися перед необработаннымтекст?Например, он будет генерировать представление:
UrdaObject
Date
Year
...
Вместо ...
UrdaObject
Date
Year
2011 (Don't want this!)
...
Образцы XML-файлов предназначены для объяснения моей ситуации.Выражение должно быть способно перемещаться по любому действительному XML-файлу и извлекать элементы, но не отдельный текст.
Как мы это исправили? Iпереключил все ссылки с child::node()
на child::*
.Тем не менее, я НЕ исправил одну строку в моем XAML, которая вытягивала child::node()
.Исправление этой строки заставило приложение вести себя корректно ... и заставило меня чувствовать себя глупо.