鑑於例如下面的XML文檔:選擇子節點,但使用XPath忽略非元素?
<?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語句,所以我建立與節點會一路下滑和原始文本之前停止一個TreeView?例如,它會產生一個觀點:
UrdaObject
Date
Year
...
而不是...
UrdaObject
Date
Year
2011 (Don't want this!)
...
示例XML文件只是爲我解釋一下我的情況。該表達式應該能夠導航任意有效的XML文件並且拉取元素,但不能拉取單個文本。
我們怎麼解決這個問題?我已將child::node()
的所有參考切換爲child::*
。但是,我沒有更正我的XAML中的一條線,它正在拉動child::node()
。糾正這一行使應用程序行爲正確......並讓我感到無聊。
我曾經嘗試過,但子:::也調出了C#TreeView中的單個文本條目(給出了上面的代碼塊),但綁定保持訪問文本視圖,就好像它是一個元素,我可以看起來解釋它。 – Urda 2011-05-18 17:26:36
...我從上面收回我的評論。這固定了它,原因如下:我已經正確地構建了查詢,但在我的XAML中的一個模板中,一個愚蠢的錯誤仍然試圖使用'node()'屬性拉出所有元素。糾正此問題導致樹視圖正常工作。哇,我覺得愚蠢的想念... – Urda 2011-05-18 17:40:11