2015-03-22 7 views
7

झलकी मैं HTML <div><p>text1</p></div><div><p>text1</p></div>सुंदर HTML आउटपुट

का एक टुकड़ा है मैं बनाने के लिए यह बहुत इस

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

क्या यह करने के लिए सबसे सरल तरीका होगा की तरह करना चाहते हैं? (मैंने ट्रांसफॉर्म और जेएसओप पर देखा है) लेकिन यह सुनिश्चित नहीं है कि उपयोग करने के लिए वास्तव में क्या स्मार्ट होगा। धन्यवाद!

+2

तरह दिखेगा - "एचटीएमएल साफ" ?! – MrWhite

+0

धन्यवाद, किसी भी तरह से मैंने इसे याद किया :) –

उत्तर

2

jTidy इस कार्य के लिए फिट सकता - 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

क्या मेरे परिणाम में ऑटो-बॉडी ऑटो-बॉडी से बचना संभव है? मुझे केवल स्निपेट का विश्लेषण करना है। –

+0

मैंने 'tidy.setPrintBodyOnly (true) सेट किया है;' - इसे करना चाहिए। यदि यह अभी भी लपेटा गया है, तो बस नोड बॉडी की सामग्री htmlDOM से प्राप्त करें। 'नोड बॉडी = htmlDom.getElementsByTagName (" body ")। आइटम (0);' –

+0

क्या होगा यदि मुझे केवल [हेडर पार्ट] होना चाहिए लेकिन शरीर नहीं है? –

2

मैं HTML Tidy का उपयोग करता हूं, यहां एक online version है।

कई टेक्स्ट संपादकों में प्लगइन हैं या इसके लिए कार्यक्षमता में बनाया गया है।

Sublime Text

BBEdit

Coda

+0

मैं शरीर और एचटीएमएल जोड़ने से कैसे बच सकता हूं? मैं केवल अपने स्निपेट सुंदर होना चाहता हूँ। –

+0

यह तब निर्भर करता है जब आप ऐसा करने का प्रयास कर रहे हैं। क्या आप इसे फ्लाई पर करना चाहते हैं, इसलिए आपका कोड स्वरूपित पृष्ठ पर भेजा गया है या आप इसे संपादित करते समय ऐसा करने की कोशिश कर रहे हैं? – whoacowboy

+0

मुझे एचटीएमएल के स्निपेट प्रदर्शित करने की ज़रूरत है, हमारे पेज को संयुक्त किया गया है। कुछ ग्राहक पृष्ठ पर HTML देखने के बजाय अलग-अलग स्निपेट देखना चाहते हैं। –

12

आप Jsoup

की तरह उपयोग कर सकते हैं
String html = "<div><p>text1</p></div><div><p>text1</p></div>"; 
Document doc = Jsoup.parseBodyFragment(html); 

लेकिन इस

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

में अपने पाठ लपेटो जाएगा इस हिस्से से छुटकारा पाने के लिए आप की तरह

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

जो

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

प्रिंट आप तो <body> से हिस्सा प्राप्त कर सकते हैं इंडेंटेशन में वृद्धि करना चाहते हैं, आप इसे पहले

के साथ सेट कर सकते हैं
doc.outputSettings().indentAmount(4); 

अब परिणाम

<div> 
    <p>text1</p> 
</div> 
<div> 
    <p>text1</p> 
</div> 
संबंधित मुद्दे