[jdom-interest] Searching tree for all elements

bob mcwhirter bob at werken.com
Sat Nov 11 07:29:32 PST 2000


> I'm new to JDOM, but I'm excited by what I've seen so far.  My question is
> regarding the ability to load an XML document and perform a query that
> returns all children with a specific name, regardless of their position in
> the structure of the document.
> 
> For example, I'd like to be able to load an XHTML document, and perform a
> query to retrieve all INPUT elements.
> 
> getChildren() only returns the direct children of an Element.  A brute force
> way to do this would be to write a function that recurses over all the
> elements, and returns the elements that match.  However, I was wondering if
> there was a more optimal way to do this.

Sounds like you might be interested in XPath.  XPath is a W3C Recommendation
at this point, used in XSLT, and is a form of addressing parts of an XML
document.

In your case, the XPath of "//INPUT" would find any/all <INPUT> elements
in your document.

A handy-dandy (but not-quite-done) implementation of an XPath engine
is available at:

	http://code.werken.com/

It does end up still doing a roughly brute-force search, but that's
handled by the XPath engine, and results in only about 2 lines of
code in your application, instead of lots of loops and iterations 
and comparisons.

Please, check it out, and if you have any problems/questions, don't
hesitate to contact me, as I'm it's author.

	-bob




More information about the jdom-interest mailing list