[Home] [By Thread] [By Date] [Recent Entries]

  • To: "Danny Ayers" <danny666@v...>,"Xml-Dev" <xml-dev@l...>
  • Subject: RE: code challenge
  • From: "Dare Obasanjo" <dareo@m...>
  • Date: Thu, 8 Aug 2002 17:44:57 -0700
  • Thread-index: AcI/LXCPOlIlbevaSZOEZPFGpkZ2IgAD3/5A
  • Thread-topic: code challenge

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@v...] 
> Sent: Thursday, August 08, 2002 3:37 PM
> To: Xml-Dev
> Subject:  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>


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member