2014-12-09 25 views
1

我有以下XML結構如何使用DOM的Java

<CodeSnippet> 
<Code id="code1"> 
<Tags>button java</Tags> 
<Snippet>sample code</Snippet> 
</Code> 
<Code id="code2"> 
<Tags>eclipse jbutton java</Tags> 
<Snippet>sample code</Snippet> 
</Code> 
<.....> 
</CodeSnippet> 

現在,我希望當我搜索使用的標籤,從上面的XML檢索所有的片段搜索子節點的XML。例如,如果搜索「java」,那麼包含標籤爲「java」的所有節點都必須返回片段。

我的搜索查詢是:

//Code/Tags[contains(concat(' ',/text(),' '), ' "+ searchTags[0] +" ')]";

這裏,searchTags [0]包含的 「java」。

我的結果集應該包含選定節點的片段,即上面xml結構中的code1和code2。

回答

1

嘗試這個表達式:

//Code/Tags[contains(., 'Java')]/../Snippet 
+0

@dfsq ......請再次見到我的問題。我已糾正它。 – TheGaME 2014-12-09 13:42:21

+0

答案仍然適用。 XPath上方將檢索'Snippet'節點'Tags'包含「Java」。 – dfsq 2014-12-09 13:47:19

+0

@ dfsq ..是的,我能夠檢索您的表達「標籤」,但我無法檢索「片段」。我只是在不改變的情況下執行你的表達。 – TheGaME 2014-12-09 13:50:53

0

對於檢索所有 「標籤」 包含 「Java」 的,我用下面的xpath表達式,

//代碼/標籤/文本()[含有( 。, '的java')]

用於檢索所有的 「片段」 相關的標籤的 「java」,我使用下面表達式

//代碼/標籤[含有(./文本(),「的java ')]/parent :: Code/Snippet/text()

感謝@dfsq幫助我表達自己的意見。非常感謝。

0

你可以寫:

//Tags//Snippet 

如果您使用的XPath

+0

我已經發布了我的答案,正在尋找。請看一看。你的權利,如果我不想使用標籤的任何搜索,但只是得到片段。 – TheGaME 2014-12-17 08:56:15