【问题标题】:dom xml parser java, same tagsdom xml解析器java,相同的标签
【发布时间】:2011-02-12 04:12:16
【问题描述】:

我有这个 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 问题文本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());
            }

        }

【问题讨论】:

    标签: java dom xml-parsing xmldom


    【解决方案1】:

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

    【讨论】:

    • @hilal...谢谢..好吧..我自己使用了那个教程,我已经理解它是如何工作的..但我的问题是别的。请再看一遍
    • @raqz 如果它没有回答你的问题,你为什么要把它标记为答案?