2010-12-16 218 views
0

Je suis en train d'utiliser DocumentBuilder et XPath pour analyser un document XML avec la structure comme:Utilisation de XPath pour obtenir des éléments enfants

<questionnaire> 
    <item> 
    <question>How have you been?</question> 
    <response>Great</response> 
    <response>Good</response> 
    <response>So-so</response> 
    <response>Bad</response> 
    <response>Rather not answer</response> 
    </item> 
</questionnaire> 

Pour accéder à la question que je l'ai fait (qui fonctionne):

expression = "/questionnaire/item[" + i + "]/question"; 
setQuestion(xmlReader.read(expression, XPathConstants.STRING).toString()); 

Maintenant, j'ai besoin d'un moyen de créer une liste de chaîne en fonction des éléments de réponse. Le nombre de réponses est variable, donc une question pourrait avoir un nombre quelconque de réponses. Est-ce que quelqu'un sait comment faire ça?

Merci

+0

Je ne suis pas pro à cela, mais si vous avez plusieurs éléments, ne serait pas vous faire mieux pour analyser le XML avec DOM ou JAXB pour pouvoir mieux compris la question et les réponses associées? –

+0

J'ai parlé avec quelques-uns des développeurs Java au travail. On a suggéré que je change ma structure de réponses à .. alors ça rendrait les choses plus faciles avec n'importe quel système. Les deux méthodes qui ont été trouvées comme étant les meilleures solutions seraient Xstream et JAXB. Je ne suis pas sûr si cela va aider quelqu'un qui cherche dans les lignes de ce sujet, mais je pensais que je partagerais ce que je pourrais dire sur ce sujet. – Robert

Répondre

0

Quelque chose comme ça ne le fera pas? Vous devez noter que xmlReader.read retourne probablement une collection dans ce cas.

expression = "/questionnaire/item[" + i + "]/response"; 
setResponse(xmlReader.read(expression, XPathConstants.STRING)); 
+0

J'ai essayé cela au début et au mieux j'obtiens une liste avec seulement le premier élément rempli. – Robert