dom xml синтаксический анализатор java, те же теги

у меня есть этот XML-документ, который имеет разное количество тегов с одинаковыми именами. как я могу получить количество дочерних элементов и их значение.

    <Question>
                <QuestionText>ABC?</QuestionText>
                <Option>A1 - XYZ</Option>
                <Option>A2 - WXY</Option>
                <Option>A2 - HJK</Option>
                <ID>1</ID>
            </Question>
    <Question>
   <QuestionText>ERY?</QuestionText>
<QuestionText>NNN?</QuestionText>
<QuestionText>KKKK?</QuestionText>
<ID>2</ID>
            </Question>

Вывод должен читать...

ID:2 имеет 1 QuestionText и 3 Option QuestionText 1:ABC? Вариант 1:A1 - XYZ Вариант 2:A2 - WXY Вариант 3:A2 - HJK

ID:1 Имеет 3 QuestionText и 0 вариант QuestionText 1.ERY? Текст вопроса 2.NNN? Текст вопроса 3.КККК?

Я пытался, но это приводит к ошибкам

    Element eElement = (Element) nNode;


      for(int i=0;i<eElement.getChildNodes().getLength();i++){
System.out.println("NodeName:"+eElement.getNodeName());
System.out.println("Tag value:"+getTagValue("QuestionText",eElement));
System.out.println("Tag value:"+getTagValue("Option",eElement));
    }

private static String getTagValue(String sTag, Element eElement){
    NodeList nlList= eElement.getElementsByTagName(sTag).item(0).getChildNodes();
    Node nValue = (Node) nlList.item(0); 

    return nValue.getNodeValue();    
}

После некоторых исследований я нашел решение

        Element eElement = (Element) nNode;

 getTagValue("QuestionText",eElement);
getTagValue("Option",eElement);

    private static void getTagValue(String sTag, Element eElement){
            NodeList nlList = eElement.getElementsByTagName(sTag);
            System.out.println("Size of nodelist:"+nlList.getLength());
            for(int i=0;i<nlList.getLength();i++){
                NodeList kList= eElement.getElementsByTagName(sTag).item(i).getChildNodes();
                Node kValue = (Node) kList.item(0); 
                System.out.println("Node Value:"+kValue.getNodeValue());
            }

        }

person i_raqz    schedule 12.02.2011    source источник


Ответы (1)


Что такое getTagValue()?

В любом случае, это лучший учебник (Как читать XML-файл в Java) для парсера DOM в java для меня. Посмотри на это

Вот getTagValue() по этой ссылке

private static String getTagValue(String sTag, Element eElement){
    NodeList nlList= eElement.getElementsByTagName(sTag).item(0).getChildNodes();
    Node nValue = (Node) nlList.item(0); 

    return nValue.getNodeValue();    
}
person Community    schedule 12.02.2011
comment
@hilal...спасибо...ну...я сам использовал этот урок и понял, как он работает...но мой вопрос в другом.пожалуйста, взгляните на него еще раз - person i_raqz; 12.02.2011
comment
@raqz Зачем вам помечать это как ответ, если он не отвечает на ваш вопрос? - person user183037; 19.03.2011