/* Uses a SAX parser to identify the parts of an XML * file. The user specifies whether to use a validating parser. */ import org.xml.sax.Attributes; import org.xml.sax.helpers.DefaultHandler; import org.xml.sax.XMLReader; import javax.xml.parsers.SAXParserFactory; import javax.xml.parsers.SAXParser; import org.xml.sax.InputSource; import java.io.FileReader; public class Sax extends DefaultHandler { private String docName; public void characters(char[] ch, int start, int length) { String s = new String(ch, start, length); s = s.trim(); if (!s.equals("")) { System.out.println(s); } } public void endDocument() { System.out.println("End document: " + docName); } public void endElement(String uri, String localName, String qName) { } public void startDocument() { System.out.println("Document name: " + docName); } public void startElement(String uri, String localName, String qName, Attributes attributes){ System.out.print(qName + ": "); for (int i = 0; i < attributes.getLength(); i++) { System.out.print(attributes.getQName(i) + " = " + attributes.getValue(i) + ", "); } System.out.println(); } public static void main(String[] args) { Sax sax = new Sax(); sax.docName = "barchart.xml"; try { SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setValidating(false); SAXParser parser = factory.newSAXParser(); XMLReader reader = parser.getXMLReader(); reader.setContentHandler(sax); reader.parse(new InputSource(new FileReader(sax.docName))); }catch (Exception e) { e.printStackTrace(); } } }