How Do I Create Standards Compliant HTML in Java?

This is a common question and the answers out there are pretty sketchy. So I’m going to provide my example code:

package demo;

import java.io.FileOutputStream;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;

public class HTMLDemo {

   public static void main(String[] args) {
      FileOutputStream outputStream = null;
      
      try {
         Document newDocument = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
         Element html = newDocument.createElement("html");
         Element head = newDocument.createElement("head");
         Element body = newDocument.createElement("body");
         
         Element p = newDocument.createElement("p");
         Text textNode = newDocument.createTextNode("Hello World");
            
         p.appendChild(textNode);
         body.appendChild(p);

         html.appendChild(head);
         html.appendChild(body);
         
         newDocument.appendChild(html);
         
         outputStream = new FileOutputStream("/demo.html");
         TransformerFactory.newInstance().newTransformer().transform(
               new DOMSource(newDocument), new StreamResult(outputStream));         
         
      } catch (Exception e) {
         e.printStackTrace();
      } finally {
         if (outputStream != null) {
            try {
               outputStream.close();
            } catch (IOException e) {
               e.printStackTrace();
            }
         }
      }
   }
}

I leave things like doctype as an exercise to the reader.

Posted in Computing, Software Development, Web. Comments Off

Is XML a “Bad Smell” in Software?

Is XML just plain bad? Or is it an otherwise useful tool that gets abused?

Posted in Computing, Software Development. Comments Off