Xpath: Выбор всего типа элемента? - PullRequest
1 голос
/ 01 февраля 2011

Я только начинаю изучать Xpath, я пытаюсь написать строку кода, которая выберет всех актеров в КАЖДОМ родителе фильма (через Java!). Ниже приведен пример одного фильма, но есть несколько элементов <Movie>, каждый из которых содержит <Actor> элементов.

<Movie Genre = 'Other'>
    <Title>Requiem For A Dream</Title>
    <ReleaseYear>2000</ReleaseYear>
    <Director>Darren Aronofsky</Director>
    <Actor Character = 'Sara Goldfarb'>Ellen Burstyn</Actor>
    <Actor Character = 'Harry Goldfarb'>Jared Leto</Actor>
    <Actor Character = 'Marion Silver'>Jennifer Connelly</Actor>
    <Actor Character = 'Tyrone C. Love'>Marlon Wayans</Actor>
</Movie>

В настоящее время я могу выбрать только первый элемент <Actor> каждого элемента <Movie> - можно ли выбрать все из них без использования цикла for?

Вот моя текущая строка кода, которая отображает первый элемент <Actor> каждого элемента <Movie>:

System.out.println("Starring: " + xpath.evaluate("Actor", movieNode) + " as " + xpath.evaluate("Actor/@Character", movieNode) + "\n");

Любая и вся помощь, если высоко ценится!

1 Ответ

4 голосов
/ 01 февраля 2011

Нет, вам нужен цикл for для перебора каждого Node в NodeList, возвращаемом методом evaluate.

NodeList nodes = (NodeList)xpath.evaluate("Actor", movieNode, XPathConstants.NODESET);
for (int i = 0; i < nodes.getLength(); i++) {
  Element actor = (Element)nodes.item(i);
  String actorName = actor.getTextContent();
  String character = actor.getAttribute("Character");
  System.out.println("Starring: " + actorName + " as " + character + "\n");
}

PS: Хороший фильм, кстати: -).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...