Дом XML парсер Java, те же теги - PullRequest
0 голосов
/ 12 февраля 2011

У меня есть этот 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 текст вопроса и 3 варианта Вопрос Текст 1: Азбука? Вариант 1: А1 - XYZ Вариант 2: A2 - WXY Вариант 3: A2 - HJK

ID: 1 имеет 3 типа вопроса и 0 опций QuestionText 1.ERY? QuestionText 2.NNN? QuestionText 3.KKKK?

Я пытался, но это дает результаты ошибки

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

        }

1 Ответ

1 голос
/ 12 февраля 2011

Что такое 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();    
}
...