[
Lists Home |
Date Index |
Thread Index
]
Thanks Dare, certainly short. I supppose I should've included the rule :
using minimal core DOM only.
Good job Chianti's cheap here...
>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>
>
|