2016-07-13 4 views
1

Ich hatte gehofft, etwas Hilfe zu bekommen, wie ich ein Programm angehen sollte, das ich versucht habe, ein paar Mal jetzt zu schreiben.Zeichnen einer Box um Sub-Strings eines Dokuments

Ich habe eine Reihe von Ordnern. In jedem Ordner befindet sich eine HTML-Datei und eine TXT-Datei, die Text in der HTML-Datei enthält und alle HTML-Tags entfernt.

Als Beispiel kann eine vereinfachte HTML-Datei

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

Und innerhalb einer .txt im selben Ordner sein, ich habe "Dies ist ein Text".

Aus diesen beiden Dateien, ich möchte eine neue Datei erstellen, die eine HTML mit einem Kasten um gezeichnet ist „Dies ist ein Text“, etwa so:

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

Das offensichtliche Problem hier ist dass die hübsch gedruckten Textdateien kein Markup enthalten und es daher schwierig ist, sie im HTML-Dokument zu finden.

Meine Idee war bisher:

-Speichern der TXT-Inhalte in einer Variablen. -Grab die HTML-Inhalte, Streifen aller HTML-Tags:

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

Ich bin nicht sicher, wie von diesem Punkt zu gelangen. Ich meine ... Ich könnte versuchen, ein Div mit einer Klasse um den Text hinzuzufügen, und fügen Sie dann einen Rahmen Stil ... aber wie finde ich die Sub-String im HTML zuverlässig, behält alle Markup innerhalb der HTML?

Ich bin sicher es gibt einen einfachen Weg dies zu tun und ich überlege es nur, ich würde normalerweise mit einem Freund darüber reden und es lösen, aber jeder scheint offline zu sein - also komme ich zu dir Anleitung hier.

Kann mir jemand bitte ein Feedback geben? Vielen Dank.

+0

dies helfen kann: https://jsoup.org/cookbook/modifying-data/set-html – Bill

Antwort

0

Dies sollte für Sie arbeiten:

Mehr Informationen über selectors und 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;"); 
    } 
} 
Verwandte Themen