java - Xpath:选择所有元素类型?

标签 java xml xpath

我刚刚开始学习 Xpath,我正在尝试编写一行代码来选择每个电影父级中的所有 Actor (通过 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");

如果非常感谢,任何和所有的帮助!

最佳答案

不,您需要一个 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:好电影顺便说一句 :-)。

关于java - Xpath:选择所有元素类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4857267/

相关文章:

xml - 带参数的递归 XSL 模板调用

javascript - 使用 XPath 在上下文节点下查找节点不起作用 (firefox/firebug/javascript)

java - 从流式 URL 读取 JSON 数据?

Java XSD : validate only by mandatory

Android Theme drawable 不适用于 Color Drawable(错误?)

java - 在 JAXP 中使用 XPath 检索 XML 节点和节点属性的值

java - org.hibernate.MappingException : entity class not found: dto. CityDTO

java - AEM/Sling - 如何在独立代码中创建 ResourceResolverFactory?

java - 为什么 "TypeToken Collections"被认为是类型安全的? (有效的 Java #29)

xml - 为什么 xpath 位置选择表达式会返回多个节点?