时间:2010-11-03 20:14:14

标签: expression xpath jdom

我对这个很困惑。给出以下xml:

<sch:eventList>
   <sch:event>
      <sch:eventName>Event One</sch:eventName>
      <sch:locationName>Location One</sch:locationName>
   </sch:event>
   <sch:event>
      <sch:eventName>Event Two</sch:eventName>
      <sch:locationName>Location Two</sch:locationName>
   </sch:event>
</sch:eventList>

使用以下代码使用JDOM时:

  XPath eventNameExpression = XPath.newInstance("//sch:eventName");

  XPath eventLocationExpression = XPath.newInstance("//sch:eventLocation");

  XPath eventExpression = XPath.newInstance("//sch:event");

  List<Element> elements = eventExpression.selectNodes(requestElement);
  for(Element e: elements) {
      System.out.println(eventNameExpression.valueOf(e));
      System.out.println(eventLocationExpression.valueOf(e));
  }

控制台显示:

 Event One
 Location One
 Event One
 Location One

我错过了什么?

1 个答案:

答案 0 :(得分:2)

不要使用'//'它始终在根节点搜索。使用例如'./sch:eventName'它相对于当前节点。