2010-12-16 2 views
0

Я пытаюсь использовать DocumentBuilder и XPath для синтаксического анализа документа XML со структурой типа:Использование XPath для получения дочерних элементов

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

Чтобы получить доступ вопрос, который я сделал это (который работает):

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

Теперь мне нужно каким-то образом создать список строк на основе элементов ответа. Количество ответов является переменным, поэтому один вопрос может иметь любое количество ответов. Кто-нибудь знает как это сделать?

Thanks

+0

Я не профессионал в этом, но если у вас есть несколько элементов, не будет вам делать лучше разбора XML с DOM или JAXB, чтобы иметь возможность лучше получить вопрос и связанные с ними ответы? – 2010-12-16 05:35:30

+0

Я говорил с несколькими разработчиками Java на работе. Один из них предложил мне изменить структуру ответов на .., поэтому было бы проще с любой из различных систем, с которыми я работаю. Двумя методами, которые стали наилучшими решениями, были бы Xstream и JAXB. Я не уверен, что это поможет любому, кто ищет по этой теме, но я чувствовал, что поделился бы информацией по этой теме. – Robert 2010-12-20 23:07:37

ответ

0

Что-то вроде этого не будет? Вы должны заметить, что xmlReader.read, вероятно, возвратит коллекцию в этом случае.

expression = "/questionnaire/item[" + i + "]/response"; 
setResponse(xmlReader.read(expression, XPathConstants.STRING)); 
Смежные вопросы