ListMoviesXML.java Source code

Java tutorial

Introduction

Here is the source code for ListMoviesXML.java

Source

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;

public class ListMoviesXML {
    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setIgnoringComments(true);

        factory.setIgnoringElementContentWhitespace(true);
        factory.setValidating(true);
        DocumentBuilder builder = factory.newDocumentBuilder();

        Document doc = builder.parse(new InputSource("y.xml"));
        Element root = doc.getDocumentElement();

        Element movieElement = (Element) root.getFirstChild();
        Movie m;
        while (movieElement != null) {
            m = getMovie(movieElement);
            String msg = Integer.toString(m.year);
            msg += ": " + m.title;
            msg += " (" + m.price + ")";
            System.out.println(msg);
            movieElement = (Element) movieElement.getNextSibling();
        }
    }

    private static Movie getMovie(Element e) {
        String yearString = e.getAttribute("year");
        int year = Integer.parseInt(yearString);

        Element tElement = (Element) e.getFirstChild();
        String title = getTextValue(tElement).trim();

        Element pElement = (Element) tElement.getNextSibling();
        String pString = getTextValue(pElement).trim();
        double price = Double.parseDouble(pString);

        return new Movie(title, year, price);
    }

    private static String getTextValue(Node n) {
        return n.getFirstChild().getNodeValue();
    }
}

class Movie {
    public String title;

    public int year;

    public double price;

    public Movie(String title, int year, double price) {
        this.title = title;
        this.year = year;
        this.price = price;
    }
}