如何使用domjava在xml中搜索子节点
我有以下XML结构如何使用domjava在xml中搜索子节点,java,xml,dom,xpath,Java,Xml,Dom,Xpath,我有以下XML结构 <CodeSnippet> <Code id="code1"> <Tags>button java</Tags> <Snippet>sample code</Snippet> </Code> <Code id="code2"> <Tags>eclipse jbutton java</Tags> <Snippet>sample code</S
<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>
按钮java
示例代码
eclipse jbutton java
示例代码
现在,当我使用标记进行搜索时,我想从上面的xml中检索所有代码段。例如,如果搜索“java”,那么所有包含标记为“java”的节点都必须返回代码段
我的搜索查询是:
//code/Tags[包含(concat(“”,/text(),“”),“+searchTags[0]+”)];
这里,searchTags[0]包含“java”
我的结果集应该包含所选节点的代码片段,即上述xml结构中的代码1和代码2。尝试以下表达式:
//代码/标记[包含(,'Java')]/../Snippet
为了检索包含“java”的所有“标记”,我使用了下面的xpath表达式
//代码/标记/文本()[包含(,'java')]
为了检索与标记“java”相关的所有“Snippet”,我使用了下面的表达式
//代码/标记[包含(./text(),'java')]/parent::Code/Snippet/text()
感谢@dfsq在他的表情上帮助我。非常感谢。你可以写:
//Tags//Snippet
如果您使用了XPath@dfsq…请再次查看我的问题。我已更正了它。答案仍然适用。上面的XPath将检索
代码段
节点标记
包含“Java”。@dfsq..是的,我可以用您的表达式检索“标记”,但无法检索“代码段”“。我只是在执行你的表情,没有改变。奇怪。如果您尝试//code/Tags[contains(./text(),'Java')]/parent::code/Snippet
,该怎么办?如果我像//code/Tags/text()[contains(,'Java')]这样写,我就能够检索到“Tags”。为了获取“Snippet”,我尝试了类似//Code/Tags/text()[包含(,'Java')]/../Snippet/text()。但是没有成功。我已经把我的答案贴在了我想要的背景上。请看一看。您的权利,如果我不想任何搜索使用标签,但只是得到片段只。