我正在使用 Java 中的有效 HTML 字符串(使用 jsoup 解析,因此所有标签都有结束标签并且格式正确),我需要找到给定标签名称的内容,例如,使用以下内容细绳:
<p> hi! </p>
<p> hi again! </p>
<h1> foo </h1>
<p> bye! </p>
给定标签“p”,我期望的结果是:
1)<p> hi! </p>
2)<p> hi again! </p>
3)<p> bye! </p>
我通过简单地使用 apache.commons.lang 库和 StringUtils.substringsBetween(String html, String "opentag" , String "endtag") 方法来完成此操作,该方法将返回具有所需结果的字符串数组。但是,当我搜索一个包含完全相同标签的标签时(一个常见的例子是 div),我会得到错误的结果(我明白为什么)
例如,与...合作
<div>
<p> hey there </p>
<div>
<div>
<p> asd </p>
</div>
</div>
</div>
我希望得到 3 个结果:1)
<div>
<p> hey there </p>
<div>
<div>
<p> asd </p>
</div>
</div>
</div>
2)
<div>
<div>
<p> asd </p>
</div>
</div>
3)
<div>
<p> asd </p>
</div>
但是我得到了一个(我知道它是因为标签的出现如何出现在字符串中)我只是不知道如何解决它。我已经为此苦苦挣扎了 2 周,我尝试过使用正则表达式,但完全没有成功,我还尝试将 html 字符串拆分为行数组,但也失败了。
你会如何处理这个问题?我已经知道有很多库可以使用 jsoup 的 getAllElementsByTag(tagName) 等方法为您执行此操作,但我想自己做。任何提示表示赞赏!