我有这个具有不同数量的相同命名标签的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个选项
QuestionText 1:ABC?选项1:A1-XYZ
选项2:A2-WXY选项3:A2-HJK

ID:1具有3 QuestionText和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());
            }

        }

最佳答案

什么是getTagValue()

无论如何,对我而言,这是Java中DOM解析器的最佳教程(How to read XML file in 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();
}

10-05 18:23