Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用domjava在xml中搜索子节点_Java_Xml_Dom_Xpath - Fatal编程技术网

如何使用domjava在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

我有以下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</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()。但是没有成功。我已经把我的答案贴在了我想要的背景上。请看一看。您的权利,如果我不想任何搜索使用标签,但只是得到片段只。