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

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   code challenge

[ Lists Home | Date Index | Thread Index ]

It may be questionable form to talk code on the list, but for them that like
to roll their sleeves up here's a bit of fun.

I was moving an app to a different environment when (surprise surprise) it
broke. After a lot of nosing around, I found the culprit - getting a list of
all elements in a populated XML DOM doc this way :

NodeList elements =
    document.getDocumentElement().getElementsByTagNameNS("*", "*");

It seems the DOM library in the new environment didn't support this and (DOM
1 style??) ignored the ns parameter and always returned no elements at all.

Ok, assuming list subscribers have coding calibre a fraction of their verbal
skills, producing a list of all elements by other means would be no
challenge at all (if there's another built-in that can do this directly, I
humbly apologise for wasting your time). However (for reasons I'd rather not
go into), I need this done in as few lines of code as possible. My attempt
is below - the use of a global looks ugly to me, but it works.

The prize is a bottle of Chianti (winner collects ;-)

Cheers,
Danny.


List elements = new ArrayList();

public void getChildren(Element element) {

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



---
Danny Ayers
<stuff> http://www.isacat.net </stuff>

Idea maps for the Semantic Web
http://ideagraph.net





 

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

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