Java解析Xml Vimeo-提取缩略图url

Java解析Xml Vimeo-提取缩略图url,java,xml,parsing,Java,Xml,Parsing,我从vimeo获得了以下xml文件: 我正在尝试使用以下代码提取缩略图媒体: File fXmlFile = new File("http://vimeo.com/api/v2/video/" + linkId + ".xml"); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); D

我从vimeo获得了以下xml文件:

我正在尝试使用以下代码提取缩略图媒体:

File fXmlFile = new File("http://vimeo.com/api/v2/video/" + linkId + ".xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
return ((Node) doc.getElementsByTagName("thumbnail_medium")).getNodeValue();
但是我得到了“未定义”作为返回值

您不能对该行进行强制转换:

return ((Node) doc.getElementsByTagName("thumbnail_medium")).getNodeValue();
return doc.getElementsByTagName("thumbnail_medium").item(0).getTextContent();
抛出ClassCastException。因此,您需要获取节点列表中的唯一项,并使用此行获取其文本值:

return ((Node) doc.getElementsByTagName("thumbnail_medium")).getNodeValue();
return doc.getElementsByTagName("thumbnail_medium").item(0).getTextContent();
我用这两种方法进行了测试:

@Test
public void domTestVimeo() throws ParserConfigurationException,
        SAXException, IOException {

    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(new ClassPathResource("vimeo.xml")
            .getInputStream());
    doc.getDocumentElement().normalize();

    String val = ((Node) doc.getElementsByTagName("thumbnail_medium"))
            .getNodeValue();

    System.out.println(val);

}

第一个抛出ClassCastException,第二个打印
http://b.vimeocdn.com/ts/137/151/137151977_200.jpg
我想这就是您要寻找的价值

另外,您是如何从传递URL的文件对象中读取的?

您不能将URL强制转换为以下内容:

return ((Node) doc.getElementsByTagName("thumbnail_medium")).getNodeValue();
return doc.getElementsByTagName("thumbnail_medium").item(0).getTextContent();
抛出ClassCastException。因此,您需要获取节点列表中的唯一项,并使用此行获取其文本值:

return ((Node) doc.getElementsByTagName("thumbnail_medium")).getNodeValue();
return doc.getElementsByTagName("thumbnail_medium").item(0).getTextContent();
我用这两种方法进行了测试:

@Test
public void domTestVimeo() throws ParserConfigurationException,
        SAXException, IOException {

    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(new ClassPathResource("vimeo.xml")
            .getInputStream());
    doc.getDocumentElement().normalize();

    String val = ((Node) doc.getElementsByTagName("thumbnail_medium"))
            .getNodeValue();

    System.out.println(val);

}

第一个抛出ClassCastException,第二个打印
http://b.vimeocdn.com/ts/137/151/137151977_200.jpg
我想这就是您要寻找的价值


另外,您是如何读取传递URL的文件对象的?

哦,非常感谢您花时间给我详细的答案,我明天会检查这个问题。是的,我注意到URL和我不知道的文件也有这样的问题:)我对ClassPathResource有一些问题,我不知道这个类是从哪个包来的(我也使用GAE)好的,我用URL()替换了ClassPathResource,现在它对我来说运行良好,再次感谢;)美好的您可以发布代码以从URL加载资源吗?如果我确信我刚刚对你的最后一个答案进行了编辑,那就太方便了,再次谢谢你,梅尔,我真的很感谢你的帮助,同时我也学到了一些东西;)哦,非常感谢你花时间给我那个详细的答案,我明天会检查这个。是的,我注意到URL和我不知道的文件也有这样的问题:)我对ClassPathResource有一些问题,我不知道这个类是从哪个包来的(我也使用GAE)好的,我用URL()替换了ClassPathResource,现在它对我来说运行良好,再次感谢;)美好的您可以发布代码以从URL加载资源吗?如果我确信我刚刚对你的最后一个答案进行了编辑,那就太方便了,再次谢谢你,梅尔,我真的很感谢你的帮助,同时我也学到了一些东西;)