2011-06-03 214 views
2

我想使用xpath解析xml提要。 Feed中包含看起來像這樣的類:幫助將xpath結果轉換爲格式化的字符串

<categories> 
<category id="6">Category 6</category> 
<category id="12">Category 12</category> 
<category id="19">Category 19</category> 
</categories> 

我目前使用的路徑「類別」,選擇其中的字符串格式返回「類別6Category 12Category 19」的所有子節點。我希望輸出成爲「類別6,類別12,類別19」。我怎樣才能做到這一點?我看着xpath函數,但似乎沒有任何東西適合這個任務。

我用這與Drupal的xpath parser module

+0

您應指定編程語言使用解析XML以及如何顯示XPath的結果。 – 2011-06-03 07:21:25

+0

好問題,+1。請參閱我的回答,以確認無法在純XPath 1.o中解決此問題,也無法解決極爲簡單且容易的XPath 2.0單線解決方案:) – 2011-06-03 13:14:46

回答

2

純XPath是:

concat(categories/category[id="6"],', ', 
     categories/category[id="12"],', ', 
     categories/category[id="19"]) 

但它不會是非常有用的,如果你需要的東西的動態,我的意思是,如果你不知道categories孩子先驗

對於動態選擇使用:

string-join(categories/*,', ') 

string-join(/categories/*,', ') 

取決於上下文。

+0

這實際上是我想要的,但我需要它是動態的。 – 2011-06-03 08:26:04

+0

你可以使用XPath 2.0嗎? – 2011-06-03 08:28:54

+0

當然,我們可以使用xpath 2.0 – 2011-06-03 08:39:54

1

在一般情況下,你應該使用/類別/類別XPath來選擇類別的節點,然後枚舉該節點集並顯示每個節點的內容,其次是逗號(最後一個節點除外)。確切的代碼取決於您使用的技術。

+0

是否可以僅使用xpath語法? – 2011-06-03 08:26:28

+0

是的。查看empo的答案。 – 2011-06-03 12:51:07

1

在靜態未知XML文檔的一般情況下,僅使用純XPath 1.0就無法生成想要的結果 - 需要來自託管它的編程語言的一些幫助。

這樣做的一個簡單而純粹的XPath 2.0的解決方案是

string-join(/*/*,', ') 
+0

它的工作原理。謝謝 – 2011-06-03 20:51:16

相關問題