我刚开始学习Xpath,我正在尝试编写一行代码来选择EACH电影父级中的所有演员(通过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>目前,我只能选择每个<Movie>元素的第一个<Actor>元素 - 是否可以在不使用for循环的情况下选择所有元素?
这是我当前的代码行,显示每个<Movie>元素的第一个<Actor> <Movie>元素:
System.out.println("Starring: " + xpath.evaluate("Actor", movieNode) + " as " + xpath.evaluate("Actor/@Character", movieNode) + "\n");
任何和所有帮助,如果非常感谢!
I'm just starting to learn Xpath, I'm trying to write a line of code that will select all of the actors in EACH movie parent (through Java!). Below, I have an example of one movie, but there are multiple <Movie> elements, each with <Actor> elements.
<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>Currently, I can only select the first <Actor> element of each <Movie> element -- is it possible to select all of them without using a for loop?
Here is my current line of code that displays the first <Actor> element of every <Movie> element:
System.out.println("Starring: " + xpath.evaluate("Actor", movieNode) + " as " + xpath.evaluate("Actor/@Character", movieNode) + "\n");
Any and all help if much appreciated!
最满意答案
不,您需要一个for循环来迭代evaluate方法返回的NodeList每个Node 。
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:好电影顺便说一句:-)。
No, you need a for loop to iterate over each Node in a NodeList returned by the evaluate method.
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: Good movie btw :-).
更多推荐
发布评论