次のようなHTMLがあります
<!-- start content -->
<p>Blah...</p>
<dl><dd>blah</dd></dl>
コメントから終了 dl タグまでの HTML を抽出する必要があります。最後の dl は、コメントの後の最初の 1 つです (さらに後にある可能性があるかどうかはわかりませんが、前にあることはありません)。この 2 つの間の 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 }
}
}