如何获取内部HTML的最后一个标签?

时间:2014-06-13 05:55:24

标签: java html jsoup html-table

我想获取特定标签中最后一项的最后一项

我的意思是;

     <tr>
        <td><b>my name</b></td>
        <td><spec id="nm" nm="eg">Example Name</spec>   
        </td>
    </tr>
    ....

 <tr>
    <td><b>samp2</b></td>
    <td title="samp2"><div>Example 2</div>
    </td>
 </tr>

我想达到"Example Name"我想写一个动态程序?我怎么能这样做?

(你可以看到最后一个标签是"spec",也许是最后一个标签sam的另一个场景我怎样才能找到最后一个标签内部html?第二个样本我想得到Example 2

更新了样本

如果我有这个:

<table>
  <tr>
    <td>1</td>
    <td><div>2</div></td>
  </tr> 
  <tr>
    <td><span>3</span></td> 
    </tr>
</table>

所以我需要的输出应该是:

2和3

因为它们是tr标记下的内部html的最后一个标记。

(我想在tr标签下的最后一个标签,但是如果它有子元素我想要它的内部html)

提前谢谢?

2 个答案:

答案 0 :(得分:0)

您可以使用jsoup html解析器来执行此操作,您可以使用css或jquery之类的选择器来查找元素

    String html = "<table><tr><td>1</td><td>2</td></tr><tr><td>3</td><td>4</td></tr></table>";
    Document doc = Jsoup.parse(html);
    System.out.println(doc);
    Elements elements = doc.select("tr td:last-child");
    for(Element element: elements) {
        System.out.println(element.html());
    }

<强>输出

2
4

答案 1 :(得分:-2)

您可以尝试使用正则表达式:

/<spec[^>]*>(.*?)<\/spec>/

我认为它效率不高但您可以尝试,检查正则表达式以获得更好的性能

/<td[^>]*>(.*?)<\/td><\/tr>/

这是近似值。会失败孩子的主题。您可以使用此结果删除span,div等。

/<(.*?)[^>]*>(.*?)<\/(.*?)>/