[
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
|