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 ]

C#:

  XmlNodeList getChildren(XmlDocument doc){ 	return
doc.SelectNodes("//*");  }

Java - Xalan: 

  NodeList getChildren(Document doc){ return
XPathAPI.selectNodeList(doc, "//*");  }


-- 
PITHY WORDS OF WISDOM 
The buddy system is essential to your survival; it gives the enemy
somebody else to shoot at.    

This posting is provided "AS IS" with no warranties, and confers no
rights. 



> -----Original Message-----
> From: Danny Ayers [mailto:danny666@virgilio.it] 
> Sent: Thursday, August 08, 2002 3:37 PM
> To: Xml-Dev
> Subject: [xml-dev] code challenge
> 
> 
> 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
> 
> 
> -----------------------------------------------------------------
> The xml-dev list is sponsored by XML.org 
> <http://www.xml.org>, an initiative of OASIS 
<http://www.oasis-open.org>

The list archives are at http://lists.xml.org/archives/xml-dev/

To subscribe or unsubscribe from this list use the subscription
manager: <http://lists.xml.org/ob/adm.pl>





 

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

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