OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   RE: [xml-dev] code challenge

[ Lists Home | Date Index | Thread Index ]


> [ Danny Ayers [mailto:danny666@virgilio.it] ]
> Paul Brown sent me a way of getting rid of the global that 
> should work, just lugging the list along for every call :
> public ArrayList getElements(Document d) {
>   return getElements(d.getDocumentElement(),new ArrayList(Collections.singleton(d.getDocumentElement()));
> }

I'm a C programmer at heart.  You see a Java object, I see a pointer...

> 05>     if (next.getNodeType() == Node.ELEMENT_NODE) {
> 06>       getElements(e,l).add(e);
> 07>     }

Well, this won't work either (it should be adding next, not e), but I have the excuse of having written the code in my phone's email client.

This will work (and is shorter, although I added some linebreaks for style purposes):

  public List getElements(Document d) {
    return getElements(
      d.getDocumentElement(),
      new ArrayList(Collections.singleton(d.getDocumentElement()))
    );
  }
  
  private final List getElements(Node e, final List l) {
    for (Node next = e.getFirstChild();next != null;next = next.getNextSibling()) {
      if (next.getNodeType() == Node.ELEMENT_NODE) {
        getElements(next,l).add(next);
      }
    }
    return l;
  }

That said, I'm assuming that we can do a Riserva from 1997 or 1998?  

Cheers,

Paul 




 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS