我有一些看起来像的 HTML
<!-- start content -->
<p>Blah...</p>
<dl><dd>blah</dd></dl>
我需要从评论中提取 HTML 到结束 dl 标记。结束的 dl 是评论之后的第一个(不确定之后是否还有更多,但之前从来没有)。两者之间的 HTML 在长度和内容上是可变的,并且没有任何好的标识符。
我看到可以使用#comment 节点选择评论本身,但是我如何从评论开始并以我所描述的 HTML 关闭标记结尾的 HTML?
这是我想出的,可行的,但显然不是最有效的。
String myDirectoryPath = "D:\\Path";
File dir = new File(myDirectoryPath);
Document myDoc;
Pattern p = Pattern.compile("<!--\\s*start\\s*content\\s*-->([\\S\\s]*?)</\\s*dl\\s*>");
for (File child : dir.listFiles()) {
System.out.println(child.getAbsolutePath());
File file = new File(child.getAbsolutePath());
String charSet = "UTF-8";
String innerHtml = Jsoup.parse(file,charSet).select("body").html();
Matcher m = p.matcher(innerHtml);
if (m.find()) {
Document doc = Jsoup.parse(m.group(1));
String myText = doc.text();
try {
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("D:\\Path\\combined.txt", true)));
out.println(myText);
out.close();
} catch (IOException e) {
//error }
}
}