2015-03-22 20 views
7

Ich habe einen HTML-Snippet <div><p>text1</p></div><div><p>text1</p></div>Ziemlich HTML Code Ausgabe

ich es ziemlich wie diese

<div> 
    <p>text1</p> 
</div> 
<div> 
    <p>text1</p> 
</div> 

machen will Was einfachste Weg, es zu tun wäre? (Ich habe auf transform und jsoup geschaut) aber nicht sicher, was wirklich schlau wäre zu verwenden. Vielen Dank!

+2

aussehen wird - "HTML Tidy" ?! – MrWhite

+0

danke, irgendwie habe ich diesen vermisst :) –

Antwort

2

jtidy für diese Aufgabe passen könnte - http://jtidy.sourceforge.net/howto.html

public String prettyPrintHTML(String rawHTML) 
{  
    Tidy tidy = new Tidy(); 
    tidy.setXHTML(true); 
    tidy.setIndentContent(true); 
    tidy.setPrintBodyOnly(true); 
    tidy.setTidyMark(false); 

    // HTML to DOM 
    Document htmlDOM = tidy.parseDOM(new ByteArrayInputStream(rawHTML.getBytes()), null); 

    // Pretty Print 
    OutputStream out = new ByteArrayOutputStream(); 
    tidy.pprint(htmlDOM, out); 

    return out.toString(); 
} 
+0

Ist es möglich, das automatische Hinzufügen von Kopf und Körper zu meinem Ergebnis zu vermeiden? Ich muss nur Schnipsel analysieren. –

+0

Ich habe 'ordentlich.setPrintBodyOnly (true); '- das sollte es tun. Wenn es noch verpackt ist, holen Sie einfach den Inhalt des Nodekörpers von htmlDOM. 'Node body = htmlDom.getElementsByTagName (" body "). Item (0);' –

+0

was ist, wenn ich nur [header part] haben soll, aber keinen Körper? –

2

Ich würde verwenden HTML Tidy hier ist ein online version.

Viele der Texteditoren haben Plugins oder eingebaute Funktionen dafür.

Sublime Text

BBEdit

Coda

+0

Wie kann ich vermeiden, Körper und HTML hinzuzufügen? Ich möchte ziemlich nur mein Schnipsel haben. –

+0

Es hängt davon ab, wenn Sie dies versuchen. Möchten Sie dies im laufenden Betrieb durchführen, damit der Code an eine formatierte Seite gesendet wird, oder versuchen Sie dies während der Bearbeitung? – whoacowboy

+0

Ich muss HTML-Snippets anzeigen, aus denen unsere Seite zusammengesetzt ist. Einige Kunden möchten Snippets separat anzeigen, anstatt HTML auf der Seite anzuzeigen. –

12

können Sie Jsoup verwenden wie

String html = "<div><p>text1</p></div><div><p>text1</p></div>"; 
Document doc = Jsoup.parseBodyFragment(html); 

Aber das wird wickeln Sie Ihren Text in

<html> 
    <head></head> 
    <body> 
    .. 
    </body> 
</html> 

Um dieses Teils loszuwerden Sie Teil von <body> wie

System.out.println(doc.body().html()); 

die Wenn Sie

<div> 
<p>text1</p> 
</div> 
<div> 
<p>text1</p> 
</div> 

druckt bekommen Möchten Sie den Einzug vergrößern, können Sie ihn mit

früher einstellen
doc.outputSettings().indentAmount(4); 

führen nun wie

<div> 
    <p>text1</p> 
</div> 
<div> 
    <p>text1</p> 
</div>