XML : Querying XML with Java

I'm able to run simple queries on my XML document using Java, but I'm looking to run a more 'advanced' query and have run into a bit of trouble in doing so.

I am able to get the name of only the first actor of this example (in this case Marlon Brando), when I want to get the names of the rest of the actors in the XML file.

I have used so far /film/cast which shows me all of the actor names, but also the role they play within the film; which I do not want.

Please help! Thanks

XMl:

      <!--?xml version="1.0"?-->  <film>      <title>"Godfather, The"</title>      <year>1972</year>      <directors>          <director>Francis Ford Coppola</director>      </directors>      <genres>          <genre>Crime</genre>          <genre>Drama</genre>      </genres>      <plot>Son of a mafia boss takes over when his father is critically wounded in a mob hit.</plot>      <cast>          <performer>              <actor>Marlon Brando</actor>              <role>Don Vito Corleone</role>          </performer>          <performer>              <actor>Al Pacino</actor>              <role>Michael Corleone</role>          </performer>          <performer>              <actor>Diane Keaton</actor>              <role>Kay Adams Corleone</role>          </performer>          <performer>              <actor>Robert Duvall</actor>              <role>Tom Hagen</role>          </performer>          <performer>              <actor>James Caan</actor>              <role>Sonny Corleone</role>          </performer>      </cast>  </film>    

Java class:

  pa    ckage Film;    import java.io.File;  import java.io.FileInputStream;  import java.io.FileNotFoundException;  import java.io.IOException;    import javax.xml.parsers.DocumentBuilder;  import javax.xml.parsers.DocumentBuilderFactory;  import javax.xml.parsers.ParserConfigurationException;  import javax.xml.xpath.XPath;  import javax.xml.xpath.XPathExpressionException;  import javax.xml.xpath.XPathFactory;    import org.w3c.dom.Document;  import org.xml.sax.SAXException;    public class ASS2_FILM{      public static void main(String[] args) {            try {              FileInputStream file = new FileInputStream (new File("/Users/benchalmers/Documents/Uni /Year 2/Database Engineering/Assignment 3/Film/FILM.xml"));                DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();                DocumentBuilder builder =  builderFactory.newDocumentBuilder();                Document xmlDocument = builder.parse(file);                XPath xPath =  XPathFactory.newInstance().newXPath();    String expression3 = "/film/cast/";              System.out.println(expression3);              String actor = xPath.compile(expression3).evaluate(xmlDocument);              System.out.println(actor);    

Returned value:

  /film/cast                  Marlon Brando              Don Vito Corleone                  Al Pacino              Michael Corleone                  Diane Keaton              Kay Adams Corleone                  Robert Duvall              Tom Hagen                  James Caan              Sonny Corleone    

No comments:

Post a Comment