gdata xml разбирает с dom - PullRequest
       7

gdata xml разбирает с dom

1 голос
/ 14 февраля 2012

Я ищу способ получить ключевые слова из видеоданных YouTube YouTube.

XML выглядит примерно так:

<?xml version='1.0' encoding='UTF-8'?>
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/' xmlns:gd='http://schemas.google.com/g/2005' xmlns:yt='http://gdata.youtube.com/schemas/2007'>
<id>http://gdata.youtube.com/feeds/api/videos/vidid</id>
<category scheme='http://gdata.youtube.com/schemas/2007/categories.cat' term='Comedy' label='Comedy'/>

<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='kw1'/>
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='kw2'/>
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='kw3'/>
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='kw4'/>
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='kw5'/>

<title type='text'>vid title</title>
...
</entry>

Я вырезал некоторые вещи, где..., поэтому я могу получить заголовок, используя следующий код:

public static String getTitle(String id) throws IOException, ParserConfigurationException, XPathExpressionException, SAXException {


    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document doc = builder.parse("https://gdata.youtube.com/feeds/api/videos/" + id);

    XPathFactory xPathfactory = XPathFactory.newInstance();
    XPath xpath = xPathfactory.newXPath();
    XPathExpression expr = xpath.compile("//entry/title/text()");

    Object result = expr.evaluate(doc, XPathConstants.STRING);
    String title = (String) result;
    return title;
}

Есть ли способ изменить это, чтобы получить ключевые слова тоже?Я должен отметить, что может быть любое количество ключевых слов, а не только 5, как показано выше.

1 Ответ

1 голос
/ 15 февраля 2012

Спасибо за ответы людей.Я сам взломал что-то, что, кажется, делает трюк

   public static ArrayList getTags(String id) throws IOException, ParserConfigurationException, XPathExpressionException, SAXException {
    ArrayList<String> tags = new ArrayList<String>();

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document doc = builder.parse("https://gdata.youtube.com/feeds/api/videos/" + id);
    NodeList nl = doc.getElementsByTagName("category");

    for (int i = 0; i<nl.getLength(); i++) {
        String kwCheck = "http://gdata.youtube.com/schemas/2007/keywords.cat";
        if (kwCheck.equals(nl.item(i).getAttributes().getNamedItem("scheme").getNodeValue()) ) {
            String kw = nl.item(i).getAttributes().getNamedItem("term").getNodeValue();       
            tags.add(kw);
        }
    }

    return tags;
}

Это возвращает только ключевые слова, но, вероятно, может сделать с некоторой уборкой.Кто-нибудь из вас видел какие-либо проблемы с этим методом?Еще раз спасибо

...