Search code examples
xmldom4j

Reading XML file using Dom4j package


I have XML file

<content>
     <std>
        <name>name1</name>
        <desc>desc1</desc>
        <sub>
           <sub1></sub1>
           <sub2></sub2>
        </sub>
     <std>
</content>

I am trying to read xml file Dom4j package

SAXReader reader = new SAXReader();
Document document;
InputStream stream = "./somthing/asd.xml";
document = reader.read(stream);

Element contentsElement = document.getRootElement();
List<Element> Elemet = contentsElement.elements();

for(Element itemElement : sourceElements){
    itemElement.elementTextTrim("name");
    itemElement.elementTextTrim("desc");
    List<Elements> subList = itemElement.elements("sub");
    //Can't go into loop because subList.size() value is 0
    for(Element e2 : subList){
           e2.elementTextTrim("sub1");
    }

}

if read properly data but i want details about <std> tag so i will try comment lines but that can't work please guide me


Solution

  • Below code is working fine for me .

        SAXReader reader = new SAXReader();
        Document document = reader.read("a.xml");
        Element rootElement = document.getRootElement();        
        List<Element> list =  rootElement.elements("std");
    
        for (Element element : list) {
            System.out.println(element.elementTextTrim("name"));
            List<Element> sublist =  element.elements("sub");
            for (Element element2 : sublist) {
                System.out.println(element2.elementTextTrim("sub1"));
                System.out.println(element2.elementTextTrim("sub2"));
            }
    
        }
    

    For below a.xml :-

    <content>
         <std>
            <name>name1</name>
            <desc>desc1</desc>
            <sub>
               <sub1>22</sub1>
               <sub2>223</sub2>
            </sub>
         </std>
    </content>