imdb 仅获取电影摘要 java (xml)
imdb get only movie summary java (xml)
有没有一些简单的方法可以在 Java-programm 中获取 imdb 电影的摘要作为字符串值。我有一个包含 imdb-id 的程序,我希望在我的应用程序中显示该电影的故事情节。
我不知道 imdb 是否有某种简单的方法可以做到这一点。因为我在使用 xml.
时遇到了一些麻烦
当我有小 xml 文件时,我通常更喜欢 DOM 解析器。
这是一种做你想做的事情的方法。我打印了这些值,但您可以将它们存储在字符串或任何适合您需要的内容中。
try {
File fXmlFile = new File("your_xml_here.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("movie");
/*
* This for is if you have more than one movie in an xml. If not you
* could just do the Node nNode = nList.item(0)
*/
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
System.out.println("Title : " + eElement.getAttribute("title"));
System.out.println("Year: " + eElement.getAttribute("year"));
// here is your plot
System.out.println("Plot: " + eElement.getAttribute("plot"));
}
}
} catch (Exception e) {
e.printStackTrace();
}
输出:
Title : Furious 7
Year : 2015
Plot : Dominic Torretto and his crew thought...
我更喜欢 JAXB,这就是您使用 JAXB 的方式:
public static void main(String[] args) throws Exception {
InputStream stream = new FileInputStream("imdb.xml"); // use your stream source
JAXBContext ctx = JAXBContext.newInstance(Root.class);
Unmarshaller um = ctx.createUnmarshaller();
JAXBElement<Root> imdb = um.unmarshal(new StreamSource(stream), Root.class);
System.out.println(imdb.getValue().movie.plot);
}
public class Root {
@XmlElement(name="movie")
public Movie movie;
}
public class Movie {
@XmlAttribute(name="plot")
public String plot;
// Add fields for other attributes you want to read
}
有没有一些简单的方法可以在 Java-programm 中获取 imdb 电影的摘要作为字符串值。我有一个包含 imdb-id 的程序,我希望在我的应用程序中显示该电影的故事情节。
我不知道 imdb 是否有某种简单的方法可以做到这一点。因为我在使用 xml.
时遇到了一些麻烦当我有小 xml 文件时,我通常更喜欢 DOM 解析器。
这是一种做你想做的事情的方法。我打印了这些值,但您可以将它们存储在字符串或任何适合您需要的内容中。
try {
File fXmlFile = new File("your_xml_here.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("movie");
/*
* This for is if you have more than one movie in an xml. If not you
* could just do the Node nNode = nList.item(0)
*/
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
System.out.println("Title : " + eElement.getAttribute("title"));
System.out.println("Year: " + eElement.getAttribute("year"));
// here is your plot
System.out.println("Plot: " + eElement.getAttribute("plot"));
}
}
} catch (Exception e) {
e.printStackTrace();
}
输出:
Title : Furious 7
Year : 2015
Plot : Dominic Torretto and his crew thought...
我更喜欢 JAXB,这就是您使用 JAXB 的方式:
public static void main(String[] args) throws Exception {
InputStream stream = new FileInputStream("imdb.xml"); // use your stream source
JAXBContext ctx = JAXBContext.newInstance(Root.class);
Unmarshaller um = ctx.createUnmarshaller();
JAXBElement<Root> imdb = um.unmarshal(new StreamSource(stream), Root.class);
System.out.println(imdb.getValue().movie.plot);
}
public class Root {
@XmlElement(name="movie")
public Movie movie;
}
public class Movie {
@XmlAttribute(name="plot")
public String plot;
// Add fields for other attributes you want to read
}