I ett av våra projekt behövde jag ”tvätta” data som kom in via importer från diverse externa källor. Tvättningen består av att ta bort HTML-element såsom script-taggar, styling-attribut och för att ge ett bättre skydd mot XSS.

Då hittade jag jsoup som är ett litet javabibliotek för att enkelt kunna parsa/tvätta HTML

Länkar:

String unsafe = "<p><a href='http://example.com/'>Link</a></p>";
String safe = Jsoup.clean(unsafe, Whitelist.basic());
// now: <p><a href="http://example.com/" rel="nofollow">Link</a></p>

Stänga taggar:

String dirty = "<p>Paragraph that is <p>not closed";
String clean = Jsoup.clean(dirty, Whitelist.basic());
// now: <p>Paragraph that is</p><p>not closed</p>

Tabeller:

String dirty = "<td>This is a table col</td>";
String clean = Jsoup.clean(dirty, Whitelist.basic().addTags(
    "table", "tr", "td", "th"));
// now: <table><tr><td>This is a table col</td></tr></table>

jsoup känns snabbt och är ett trevligt ramverk som är enkelt att använda och funkar bra för att ”tvätta” HTML. Jag testade även JTidy och htmlcleaner men de kändes inte lika lätta att använda och jsoup hade precis den funktionalitet jag behövde. En annan fördel med jsoup är att det enkelt går att ladda hem biblioteket som en Maven-artefakt.

<dependency>
  <!-- jsoup HTML parser library @ http://jsoup.org/ -->
  <groupId>org.jsoup</groupId>
  <artifactId>jsoup</artifactId>
  <version>1.3.2</version>
</dependency>

Rekommenderas!