In this tutorial we look at how to build a JDOM2 using a SAXBuilder. To understand how SAXBuilder works and how to configure it look at this tutorial. The example below demonstrates the following
- Building a JDOM2 document using a SAXBuilder.
- Obtaining the DOCTYPE of the document.
- Obtaining the root element of the document
- Obtaining a specific child (specify name) of an element
- Iterating through the descendants of an Element and printing the values of all elements whose type is not Text or Comment
- Iterating through the descendants of an Element and printing the elements of type Comment (using a Comment filter)
The example below uses the tomcat web.xml file which can be downloaded from
here
package com.studytrails.xml.jdom;
import java.io.File;
import java.io.IOException;
import org.jdom2.Comment;
import org.jdom2.Content;
import org.jdom2.Content.CType;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.filter.Filters;
import org.jdom2.input.SAXBuilder;
import org.jdom2.util.IteratorIterable;
public class JdomUsingSAXBuilder {
private static String file1 = "tomcat-web-dtd.xml";
public static void main(String[] args) throws JDOMException, IOException {
// Use a SAX builder
SAXBuilder builder = new SAXBuilder();
// build a JDOM2 Document using the SAXBuilder.
Document jdomDoc = builder.build(new File(file1));
// get the document type
System.out.println(jdomDoc.getDocType());
//get the root element
Element web_app = jdomDoc.getRootElement();
System.out.println(web_app.getName());
// get the first child with the name 'servlet'
Element servlet = web_app.getChild("servlet");
// iterate through the descendants and print non-Text and non-Comment values
IteratorIterable<Content> contents = web_app.getDescendants();
while (contents.hasNext()) {
Content web_app_content = contents.next();
if (!web_app_content.getCType().equals(CType.Text) && !web_app_content.getCType().equals(CType.Comment)) {
System.out.println(web_app_content.toString());
}
}
// get comments using a Comment filter
IteratorIterable<Comment> comments = web_app.getDescendants(Filters.comment());
while (comments.hasNext()) {
Comment comment = comments.next();
System.out.println(comment);
}
}
}
I can’t find the “tomcat-web-dtd.xml” from the given link
This example is working one, but the xml which here described is wrong consist errors, but hura i was able to parse it with a given Java example