获取特定节点元素下的节点



我需要帮助来解决我的问题,或者至少需要一些建议。我正在使用 XPATH 使用 HTMLcleaner 解析 HTML 文档。

我有这样的东西:

<html>
[code and other <h4> tags]
<h4>Random name</h4>
<a href="link" target="target"> Text I want to get </a>
<a href="link2" target="target2"> Text I want to get 2 </a>
<a href="link3" target="target3"> Text I want to get 3 </a>
<a href="link4" target="target4"> Text I want to get 4 </a>
<h4> Random name 2 </h4>
<a href="link" target="target"> Text I don't want to get </a>

[code and other <h4> tags]
</html>

还行。我有几个<h4>标签,每个标签都有<a>标签和一些文本。我的问题是我不知道如何从特定的文本中获取所有相应的文本,就像"h4[i]"一样。我尝试了这样的事情,但没有用:

String xpath = "h4["+number+"]//a" //where number will increment

谢谢你的建议,帮忙!

使用

/*/h4[1]/following-sibling::a[not(preceding-sibling::h4[2])]/text()

基于 XSLT 的验证

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>
 <xsl:strip-space elements="*"/>
 <xsl:template match="/">
   <xsl:copy-of select=
   "/*/h4[1]/following-sibling::a[not(preceding-sibling::h4[2])]/text()"/>
 </xsl:template>
</xsl:stylesheet>

将此转换应用于以下 XML 文档(提供的片段,包装在单个顶部元素中以成为格式正确的 XML 文档)时:

<html>
    <h4>Random name</h4>
    <a href="link" target="target"> Text I want to get </a>
    <a href="link2" target="target2"> Text I want to get 2 </a>
    <a href="link3" target="target3"> Text I want to get 3 </a>
    <a href="link4" target="target4"> Text I want to get 4 </a>
    <h4> Random name 2 </h4>
    <a href="link" target="target"> Text I don't want to get </a>
</html>

将计算 Xpath 表达式,并将所有选定的(文本)节点复制到输出中:

 Text I want to get  Text I want to get 2  Text I want to get 3  Text I want to get 4 

相关内容

  • 没有找到相关文章

最新更新