我能够使用 Java 对 XML 文档运行简单的查询,但我希望运行更“高级”的查询,但在这样做时遇到了一些麻烦。
当我想获取 XML 文件中其余 Actor 的姓名时,我只能获取此示例中第一个 Actor 的姓名(在本例中为马龙·白兰度)。
到目前为止,我已经使用了 /film/cast
,它显示了所有 Actor 的名字,以及他们在电影中扮演的角色;这是我不想要的。
请帮忙! 谢谢
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 类:
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);
返回值:
/film/cast
Marlon Brando
Don Vito Corleone
Al Pacino
Michael Corleone
Diane Keaton
Kay Adams Corleone
Robert Duvall
Tom Hagen
James Caan
Sonny Corleone
最佳答案
要获取 Actor 姓名,只需尝试更改:
String expression3 = "/film/cast/";
致:
String expression3 = "/film/cast/performer/actor";
关于java - 使用 Java 查询 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36516324/