In this tutorial will use the output from How to create XML file in java using DOM tutorial plus adding a few more elements.
XML file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<users>
<user id="100">
<name>John Doe</name>
<email>john.doe@example.com</email>
</user>
<user id="200">
<name>Richard Bo</name>
<email>richard.bo@example.com</email>
</user>
<user id="300">
<name>Ant Sam</name>
<email>ant.sam@example.com</email>
</user>
</users>
Code
package com.admfactory.xml;
import java.util.HashMap;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class XMLSaxReader {
public static void main(String[] args) {
try {
System.out.println("XML Parser using SAXParser Example");
System.out.println();
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
/** defining the custom handler */
DefaultHandler handler = new DefaultHandler() {
HashMap<String, Boolean> elements = new HashMap<String, Boolean>();
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
System.out.println("Start Element :" + qName);
/** storing the fact that the element has started */
elements.put(qName, true);
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
System.out.println("End Element :" + qName);
/** this section is just to add some space in the console print out */
if (qName.equalsIgnoreCase("user")) {
System.out.println();
}
}
@Override
public void characters(char[] characters, int start, int length) throws SAXException {
if (elements.containsKey("name") && elements.get("name")) {
System.out.println("Name: " + new String(characters, start, length));
elements.put("name", false);
}
if (elements.containsKey("email") && elements.get("email")) {
System.out.println("Email: " + new String(characters, start, length));
elements.put("email", false);
}
}
};
saxParser.parse("d:\\admfactory.com\\users.xml", handler);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Output
XML Parser using SAXParser Example
Start Element :users
Start Element :user
Start Element :name
Name: John Doe
End Element :name
Start Element :email
Email: john.doe@example.com
End Element :email
End Element :user
Start Element :user
Start Element :name
Name: Richard Bo
End Element :name
Start Element :email
Email: richard.bo@example.com
End Element :email
End Element :user
Start Element :user
Start Element :name
Name: Ant Sam
End Element :name
Start Element :email
Email: ant.sam@example.com
End Element :email
End Element :user
End Element :users