[jdom-interest] Document.getContent() only returning the root element, not all xml child content elements as expected

Jason Hunter jhunter at servlets.com
Sun Mar 25 20:04:42 PST 2007


Hi Julius,

document.getContent() returns all nodes directly under the document, 
which would be the root element and maybe some comments or processing 
instructions, and maybe a doctype.  It's not designed to iterate through 
the full document.  For that you can call document.getDescendants().  It 
gives you an iterator for all nodes matching the optional filter you 
pass it.

-jh-

Julius Schorzman wrote:
> Hi all.  I'm a bit flummoxed by an issue with JDom, which I've been 
> using for about two years now.  It appears that Document.getContent is 
> only returning the root element of the document, not all of the elements 
> in the document.  For example, here is some test code:
> 
>     private Document d;
> 
>     private void parse(){
>        
>         //output the xml to make sure it loaded correctly
>         XMLOutputter out = new XMLOutputter(Format.getPrettyFormat());
>         try {
>             out.output(d, System.out);
>         } catch (Exception ignored) {}
>        
>         //print out the number of elements returned by getContent
>         System.out.println( d.getContent( ).size() );
>         
>         //set the ID for this document
>         for ( Object o : d.getContent( ) ) {
>             
>             try {
>                 System.out.println(((Element)o).getName());
>             } catch ( ClassCastException ignored ) { }
>             
>         }
>         
>     }
> 
> The xml document is:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <test>
>   <a>
>     <b>
>       <c>
>         <d />
>       </c>
>     </b>
>   </a>
>   <a>
>     <b>
>       <c>
>         <d />
>       </c>
>     </b>
>   </a>
>   <a>
>     <b>
>       <c>
>         <d />
>       </c>
>     </b>
>   </a>
> </test>
> 
> And the outcome of this is:
> [the xml document as shown above]
> 1
> test
> 
> So, as you can see, the root element <test> is the one and only element 
> returned in the list returned by d.getContent( ).  Can anyone explain 
> why this might be?
> 
> Thanks!  Please forgive me if this has been answered previously -- I 
> searched for quite a while and couldn't find a thread with this issue.
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> To control your jdom-interest membership:
> http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com


More information about the jdom-interest mailing list