2016-07-13 3 views
1

私は数回書くことを試みたプログラムにどのように取り組むべきかを知りたいと考えていました。文書のサブストリングの周りにボックスを描く

私はいくつかのフォルダを持っています。各フォルダには、HTMLファイルと、HTMLファイルにテキストを含む.txtファイルがあり、すべてのHTMLタグが取り除かれます。

例として

、単純化されたHTMLファイルには、私が持っている "これは、いくつかのテキストである"

<html><head></head><body><p>This is some <b>text</b></p><p>Please ignore me</p></body></html>

と同じフォルダ内の.txt内にあってもよいです。

Image of the HTML file with a box crudely drawn around "This is some text"

明白な問題はここにある:これらの2つのファイルから

、私は周りに描かれたボックスとHTMLで新しいファイルを作成したいと思いますので同様、「これは、いくつかのテキストです」きれいに印刷されたテキストファイルにはマークアップが含まれていないので、HTML文書内でそれを見つけることは困難です。

私の考えでは、これまでされています:

変数に.txtの内容-save。 HTMLコンテンツ-Grab 、すべてのHTMLタグのストリップ:

public static String html2text(String html) { 
    return Jsoup.parse(html).text(); 
} 

私はこの時点から続行するかどうかはわかりませんよ。私は...私は、テキストを囲むクラスでdivを追加して、これに枠線スタイルを追加しようとすることができます...しかし、どのようにHTML内のサブストリングを確実に見つけて、すべてのマークアップをHTML?

私はこれを行う簡単な方法があると確信しています。私はたまにそれを思っています。私は通常これについて友人とチャットして解決しますが、誰もがオフラインになるようです - ここにガイダンス。

フィードバックをお寄せください。ありがとう。

+0

を、これが役立つことがあります。https://jsoup.org/cookbook/modifying-data/set-html – Bill

答えて

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;"); 
    } 
} 
関連する問題