2012-08-22 6 views
5

मैं कुछ अन्य सामग्री को अपरिवर्तित रखते हुए, HTML फ़ाइलों में कुछ तत्वों को प्रतिस्थापित करना चाहता हूं।jsoup के साथ पार्स एचटीएमएल और मूल सामग्री को संरक्षित करें

Document doc = Jsoup.parse("<div id=title>Old</div >\n" + 
     "<p>1<p>2\n" + 
     "<table><tr><td>1</td></tr></table>"); 
doc.getElementById("title").text("New"); 
System.out.println(doc.toString()); 

मैं निम्नलिखित उत्पादन की उम्मीद:

<div id=title>New</span></div > 
<p>1<p>2 
<table><tr><td>1</td></tr></table> 

इसके बजाय, मैं:

<html> 
<head></head> 
<body> 
    <div id="title">New</div> 
    <p>1</p> 
    <p>2 </p> 
    <table> 
    <tbody> 
    <tr> 
    <td>1</td> 
    </tr> 
    </tbody> 
    </table> 
</body> 
</html> 

Jsoup कहा:

  1. बंद करने पी टैग
  2. शक le-उद्धरण विशेषता के लिए मान
  3. tbody
  4. एचटीएमएल, सिर और शरीर के तत्वों

मैं वापस मूल करने के लिए HTML संशोधित serialise कर सकते हैं? Jericho ऐसा करता है लेकिन यह जसप के रूप में स्लिम डॉम मैनिपुलेशन विधियों को प्रदान नहीं करता है।

+2

आप यह कर सकता है अगर JSoup आप तत्वों का चरित्र ऑफसेट देना होगा:

अन्य बिंदुओं के लिए यह प्रयास करें। Http://stackoverflow.com/questions/11387458/get-character-offsets-for-elements-in-jsoup देखें। हमें इस सुविधा की ज़रूरत है। दुर्भाग्य से, जेएसओपी का लेखक अब jsoup google समूह पर पोस्ट किए गए प्रश्नों का जवाब नहीं दे रहा है। – ccleve

उत्तर

0

क्या कोई कारण है कि विशेषता मानों को उद्धृत नहीं किया जाना चाहिए? here और here देखें।

final String html = "<div id=title>Old</div >\n" 
      + "<p>1<p>2\n" 
      + "<table><tr><td>1</td></tr></table>"; 

Document doc = Jsoup.parse(html); 
doc.select("[id=title]").first().text("New"); 
doc.select("body, head, html, tbody").unwrap(); 
doc.outputSettings().prettyPrint(false); 

System.out.println(doc); 
संबंधित मुद्दे