我希望能得到一些帮助,告诉我如何处理我曾试图写过几次的程序。
我有很多文件夹。在每个文件夹中,都有一个HTML文件和一个.txt文件,其中包含HTML文件中的文本,并删除了所有HTML标记。
例如,简化的HTML文件可能是
<html><head></head><body><p>This is some <b>text</b></p><p>Please ignore me</p></body></html>
在同一个文件夹的.txt中,我有“这是一些文字”。
从这两个文件中,我想创建一个新文件,这是一个带有“这是一些文本”的框的HTML,如下所示:
这里显而易见的问题是漂亮打印的文本文件不包含任何标记,因此很难在HTML文档中找到它。
到目前为止我的想法是:
- 在变量中保存.txt内容。 - 抓取HTML内容,删除所有HTML标签:
public static String html2text(String html) {
return Jsoup.parse(html).text();
}
我不确定如何从这一点开始。我的意思是......我可以尝试添加一个带有围绕文本的类的div,然后为此添加边框样式...但是如何可靠地在HTML中找到子字符串,保留所有标记HTML?
我确信有一个简单的方法可以做到这一点,我只是在思考它,我通常会与朋友聊聊并解决它,但每个人似乎都处于离线状态 - 所以我来找你指导这里。
有人可以提供任何反馈吗?感谢。
答案 0 :(得分:0)
这应该适合你:
有关selectors和setting attribute values
的更多信息private void test(){
//replace with your stored variables
String html = "<html><head></head><body><p>This is some <b>text</b></p><p>Please ignore me</p></body></html>";
String txt = "This is some text";
Document doc = Jsoup.parse(html);
String query = "p:contains(" + txt + ")";
Elements htmlTxt = doc.select(query); //selects all the paragraph elements with your target txt
//Loop through each element and add a red border around it
for(Element e : htmlTxt){
System.out.println("e: " + e.toString());
e.attr("style", "border:3px; border-style:solid; border-color:#FF0000; padding: 1em;");
}
}