RE: [xml-dev] code challenge

From
Toivo "Deutsch" Lainevool <>
To
'Jeff Lowery' <>, 'Danny Ayers' <>, 'Xml-Dev' <>
Date
2002-08-09T00:58:11Z
ID
<000201c23f3f$d600a050$6601a8c0@deutsch8100>
Thread
RE: [xml-dev] code challenge
Nope, that won't work, you can't construct a new loop in every call of
the method.

Try passing the list in as a parameter and using the NodeList, like
this:

  public void getChildren( Element element, List elements ) {

    elements.add( element );

    NodeList list = element.getChildNodes();
    for( int i = 0; i < list.getLength(); i++ ) {
      if( list.item( i ).getNodeType() == Node.ELEMENT_NODE ) {
        getChildren( ( Element )list.item( i ), elements );
      }
    }
  }

Toivo 

-----Original Message-----
From: Jeff Lowery [mailto:] 
Sent: Thursday, August 08, 2002 5:30 PM
To: 'Danny Ayers'; Xml-Dev
Subject: RE: [xml-dev] code challenge


First, get rid of the global, like so:

> 
> 
*  public List getChildren(Element element) {
> 
*     List elements = new ArrayList();
>     elements.add(element);
> 
>     Node child;
>     Node next = (Node) element.getFirstChild();
>     while ((child = next) != null) {
>         next = child.getNextSibling();
>             if (child.getNodeType() == Node.ELEMENT_NODE) {
>                 getChildren((Element) child);
>             }
>         }
*     return elements;
> }


-- Jeff