Skip to content

A fork of jsoup to provide support for rudimentary parsing and outputting of FreeMarker templates.

License

Notifications You must be signed in to change notification settings

TwelveIterations/jsoup-ftl

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jsoup-ftl - about this fork

The default FreeMarker template notations (<#...>, <@...>, ${...}) and their deviations from normal HTML make them problematic for processing through jsoup, as jsoup considers the directives as bogus tags and cleans up expressions within tags and attributes to follow HTML naming rules (as in stripping the ${...} bit and cleaning up what's inside).

FreeMarker supports an alternate notation via [#...] which would solve some of these problems, but that still prevents a proper traversal through the tree as you would expect, since all directives would just become normal text nodes.

This fork patches and extends jsoup to provide rudimentary support for FreeMarker templates, allowing you to parse and output an .ftl file in the same manner as you would an HTML file, without corrupting the FreeMarker-specific contents of it.

jsoup is very goal-oriented at the cost of extensibility, so I do not believe these changes are suitable to be merged upstream, as some of the patches tie directly into the reader and writer and can not be toggled off. For that reason this fork should be used only for processing FreeMarker templates, as it will always treat any input as if it was FTL. There is also no automated tests and this was thrown together in a day, so I would not consider it production-ready.

jsoup: Java HTML Parser

jsoup is a Java library for working with real-world HTML. It provides a very convenient API for fetching URLs and extracting and manipulating data, using the best of HTML5 DOM methods and CSS selectors.

jsoup implements the WHATWG HTML5 specification, and parses HTML to the same DOM as modern browsers do.

  • scrape and parse HTML from a URL, file, or string
  • find and extract data, using DOM traversal or CSS selectors
  • manipulate the HTML elements, attributes, and text
  • clean user-submitted content against a safe-list, to prevent XSS attacks
  • output tidy HTML

jsoup is designed to deal with all varieties of HTML found in the wild; from pristine and validating, to invalid tag-soup; jsoup will create a sensible parse tree.

See jsoup.org for downloads and the full API documentation.

Build Status

Example

Fetch the Wikipedia homepage, parse it to a DOM, and select the headlines from the In the News section into a list of Elements:

Document doc = Jsoup.connect("https://en.wikipedia.org/").get();
log(doc.title());
Elements newsHeadlines = doc.select("#mp-itn b a");
for (Element headline : newsHeadlines) {
  log("%s\n\t%s", 
    headline.attr("title"), headline.absUrl("href"));
}

Online sample, full source.

Open source

jsoup is an open source project distributed under the liberal MIT license. The source code is available on GitHub.

Getting started

  1. Download the latest jsoup jar (or add it to your Maven/Gradle build)
  2. Read the cookbook
  3. Enjoy!

Android support

When used in Android projects, core library desugaring should be enabled to support Java 8+ features.

Development and support

If you have any questions on how to use jsoup, or have ideas for future development, please get in touch via the mailing list.

If you find any issues, please file a bug after checking for duplicates.

The colophon talks about the history of and tools used to build jsoup.

Status

jsoup is in general, stable release.

About

A fork of jsoup to provide support for rudimentary parsing and outputting of FreeMarker templates.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Languages

  • Java 82.7%
  • HTML 17.3%