2012-11-14 31 views
1

我還有Vimeo下面的XML文件:http://vimeo.com/api/v2/video/21331554.xml的Java解析XML的Vimeo - 提取縮略圖URL

我試圖提取與下面的代碼縮略圖介質:

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(); 

,但我得到「未定義」作爲回報

回答

1

你不能投了NodeListNode所以這行:

return ((Node) doc.getElementsByTagName("thumbnail_medium")).getNodeValue(); 

拋出ClassCastException。所以,你需要得到的唯一項目的節點列表,並與該行獲取其文本值:

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); 

} 

而且

@Test 
public void yourTest() throws ParserConfigurationException, SAXException, 
     IOException { 
    // File fXmlFile = new File("http://vimeo.com/api/v2/video/" + 21331554 
    // + ".xml"); 

    InputStream is = new ClassPathResource("vimeo.xml").getInputStream(); 

    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
    Document doc = dBuilder.parse(is); 
    doc.getDocumentElement().normalize(); 
    String val = doc.getElementsByTagName("thumbnail_medium").item(0) 
      .getTextContent(); 

    System.out.println(val); 

} 

第一個拋出ClassCastException,第二個打印http://b.vimeocdn.com/ts/137/151/137151977_200.jpg我認爲這是你正在尋找的價值。

此外,您是如何從File對象讀取傳遞URL的?

+0

噢非常感謝你花時間給我詳細的答案,我明天會檢查一下。是的,只是注意到這一點以及URL和文件我不知道:) –

+0

我有一些麻煩的ClassPathResource,我不知道從包這個類是從(我也使用GAE) –

+0

好吧我替換ClassPathRessource通過URL(),它現在對我來說很好,再次感謝;) –