你不能投了NodeList到Node所以這行:
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的?
噢非常感謝你花時間給我詳細的答案,我明天會檢查一下。是的,只是注意到這一點以及URL和文件我不知道:) –
我有一些麻煩的ClassPathResource,我不知道從包這個類是從(我也使用GAE) –
好吧我替換ClassPathRessource通過URL(),它現在對我來說很好,再次感謝;) –