2010-11-03 17 views
1

Je suis assez confus à propos de celui-ci. Étant donné le code XML suivant:JDOM-XPath: Impossible d'obtenir la deuxième valeur dans une collection

<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> 

Lorsque vous utilisez JDOM en utilisant le code suivant:

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)); 
    } 

La console montre ceci:

Event One 
Location One 
Event One 
Location One 

Qu'est-ce que je manque?

Répondre

2

N'utilisez pas '//' il commence toujours à chercher sur le noeud racine. Utilisez par exemple './sch:eventName' est relatif au noeud courant.

+1

Désolé, je viens de découvrir que le même problème a déjà été résolu. Merci: http://stackoverflow.com/questions/945512/looping-through-items-using-xpath – esBe