1

vimeo から次の xml ファイルがあります: http://vimeo.com/api/v2/video/21331554.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();

しかし、私はリターンとして「未定義」を取得します

4

1 に答える 1

1

NodeListNodeにキャストできないため、次のようになります。

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

ClassCastExceptionをスローします。したがって、NodeList内の唯一のアイテムを取得し、次の行でそのテキスト値を取得する必要があります。

return doc.getElementsByTagName("thumbnail_medium").item(0).getTextContent();

私はこれを次の2つの方法でテストしました。

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

}

1つ目はClassCastExceptionをスローし、2つ目http://b.vimeocdn.com/ts/137/151/137151977_200.jpgはそれが探している値だと思います。

また、URLを渡すFileオブジェクトからどのように読み取りましたか?

于 2012-11-15T00:13:10.963 に答える