Edit html file using java

I have an HTML document stored in memory (set on a Flying Saucer XHTMLPanel) in my java application.

xhtmlPanel.setDocument(Main.class.getResource("/mailtemplate/DefaultMail.html").toString());

html file below;


    
    
    
        

I want to set the contents of the p elements. I don't want to set a schema for it to use getDocumentById(), so what alternatives do I have?

asked Nov 1, 2013 at 16:27

1

XHTML is XML, so any XML parser would be my recommendataion. I maintain the JDOM library, so would naturally recommend using that, but other libraries, including the embedded DOM model in Java will work. I would use something like:

    Document doc = new SAXBuilder().build(Main.class.getResource("/mailtemplate/DefaultMail.html"));

    // XPath that finds the `p` element with id="first"
    XPathExpression xpe = XPathFactory.instance().compile(
            "//p[@id='first']", Filters.element());
    Element p = xpe.evaluateFirst(doc);

    p.setText("This is my text");

    XMLOutputter xout = new XMLOutputter(Format.getPrettyFormat());
    xout.output(doc, System.out);

Produces the following:



  
  
    

This is my text

answered Nov 1, 2013 at 16:47

rolflrolfl

17.3k7 gold badges40 silver badges75 bronze badges

2

use a fine graded Html parser and manipulation library like jsoup. You can easily create a Document by passing the html to jsoup.parse(String htmlContent) function. This library allows all of the DOM manupulation function including CSS or jquery-like selector syntax. doc.selct(String selector), where doc is an instance of Document.

For example you can select the first p using doc.select("p").first(). A minimal working solution would be:

Document doc = jsoup.parse(htmlContent);
Element p = doc.select("p").first();
p.text("My Example Text");

Reference:

  1. Use selector-syntax to find elements

answered Nov 1, 2013 at 17:00

Edit html file using java

SageSage

15.1k3 gold badges31 silver badges36 bronze badges

1

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 safelist, 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.

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 (online sample, full source):

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"));
}

Open source

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

Getting started

  1. Download the jsoup jar (version 1.15.3)
  2. Read the cookbook introduction
  3. Enjoy!

Development and support

If you have any questions on how to use jsoup, or have ideas for future development, please get in touch via one of the discussion methods.

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.

Development of jsoup happens on GitHub. There you can see the latest changes, and get the source to build an unreleased version.

Status

jsoup is in general release.

Can I use HTML with Java?

In java, we can extract the HTML content and can parse the HTML Document.

How do you use HTML in Java?

Put a tag like $tag for any dynamic content and then do something like this: File htmlTemplateFile = new File("path/template. html"); String htmlString = FileUtils. readFileToString(htmlTemplateFile); String title = "New Page"; String body = "This is Body"; htmlString = htmlString.

Can we write HTML code in Eclipse?

Simply follow these steps:.
Select File->New->Other..
Expand Web and select HTML File. Click Next..
Enter a file name, select the parent folder and click Next..
Select New HTML File (5) for the template and click Finish..