imdb只获取电影摘要java(xml)

时间:2015-04-23 11:37:14

标签: java xml imdb

是否有一些简单的方法可以将imdb影片的摘要作为Java程序中的String值获取。我有一个包含imdb-id的程序,我想在我的应用程序中显示该电影的故事情节。

我不知道imdb是否有某种简单的方法可以做到这一点。因为我在使用xml时遇到了一些麻烦。

http://www.omdbapi.com/?i=tt2820852&plot=full&r=xml

2 个答案:

答案 0 :(得分:1)

我更喜欢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
}

答案 1 :(得分:0)

当我有小的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();
    }

输出:

  

标题:愤怒7
  年份:2015年   情节:Dominic Torretto和他的团队认为......