Dot-Net
XPath 選擇具有指定名稱的所有元素
我相信這應該能夠在不參考實現的情況下僅使用標準 XPath 來回答,但僅供參考,我在 .Net(System.Xml 命名空間)中使用 XML DOM 對象。
我有一個節點從 XML 文件的深處傳遞給我的函式,並且我想選擇該節點的所有具有特定名稱的後代元素,而不管這些節點的中間路徑如何。我正在撥打的電話如下所示:
node.SelectNodes("some XPath here");我正在使用的節點看起來像這樣:
... <food> <tart> <apple color="yellow"/> </tart> <pie> <crust quality="flaky"/> <filling> <apple color="red"/> </filling> </pie> <apple color="green"/> </food> ...我想要的是所有“蘋果”節點的列表,即 3 個結果。我嘗試了幾種不同的方法,但沒有一個能得到我想要的。
node.SelectNodes("apple");這給了我一個結果,青蘋果。
node.SelectNodes("*/apple");這給了我一個結果,黃色蘋果。
node.SelectNodes("//apple");這給了我數百個結果,看起來像文件中的每個蘋果節點,或者至少可能是文件根目錄的直接子節點的每個蘋果節點。
如何創建一個 XPath,它將為我提供目前節點下的所有蘋果節點,而不管它們在目前節點下的深度如何?具體來說,根據我上面的例子,我應該得到三個結果——紅色、綠色和黃色的蘋果。
試試
.//apple。這列出了apple作為目前節點的後代的所有節點。為了更好地理解本主題,您應該了解 XPath 軸的工作原理。例如,你也可以寫descendant::apple。