【问题标题】:Drawing a box around sub-strings of a document在文档的子字符串周围绘制一个框
【发布时间】:2016-11-16 02:45:41
【问题描述】:

我希望在如何处理我已经尝试编写过几次的程序方面获得一些帮助。

我有很多文件夹。在每个文件夹中,都有一个 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?

我确定有一个简单的方法可以做到这一点,我只是想多了,我通常会和朋友聊天并解决它,但每个人似乎都离线 - 所以我来找你寻求指导在这里。

有人可以提供任何反馈吗?谢谢。

【问题讨论】:

标签: java html parsing substring jsoup


【解决方案1】:

这应该适合你:

有关selectorssetting 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;");
    }
}

【讨论】:

    猜你喜欢
    • 2013-04-16
    • 1970-01-01
    • 2020-05-03
    • 2011-01-02
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多