/* Uses a DOM parser to identify the parts of an XML * document. The user specifies whether to use a * validating parser. */ import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.w3c.dom.Node; import org.w3c.dom.Text; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.*; public class Dom { public static void main(String[] args) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new File("barchart.xml")); Element root = document.getDocumentElement(); root.normalize(); Node titleElement = root.getElementsByTagName("title").item(0); String title = titleElement.getFirstChild().getNodeValue(); NodeList axes = root.getElementsByTagName("axis"); String x1axis = ""; String x2axis = ""; Element temp = (Element) axes.item(0); if (temp.getAttribute("variable").equals("x1")) { x1axis = temp.getFirstChild().getNodeValue(); } else { x2axis = temp.getFirstChild().getNodeValue(); } temp = (Element) axes.item(1); if (temp.getAttribute("variable").equals("x1")) { x1axis = temp.getFirstChild().getNodeValue(); } else { x2axis = temp.getFirstChild().getNodeValue(); } NodeList datapoints = root.getElementsByTagName("datapoint"); for (int i = 0; i < datapoints.getLength(); i++) { Element datapoint = (Element)datapoints.item(i); Element dataset = (Element) datapoint.getParentNode(); String label = dataset.getAttribute("label"); String x1 = datapoint.getAttribute("x1"); String x2 = datapoint.getAttribute("x2"); System.out.println(title + " " + label + " \"" + x1axis + "=" + x1 + "\"" + " \"" + x2axis + "=" + x2 + "\""); } }catch (Exception e) { e.printStackTrace(); } } }