Reading XML using Groovy's DOMCategory Add comment to Wiki View in Wiki Edit Wiki page Printable Version

Information

Java has in-built support for DOM processing of XML using classes representing the various parts of XML documents, e.g. Document, Element, NodeList, Attr etc. For more information about these classes, refer to the respective JavaDocs. Some of the key classes are:

DOM class

JavaDocs

Element

6 7

NodeList

6 7

Groovy syntax benefits can be applied when using these classes resulting in code which is similar to but more compact than the Java equivalent. In addition, Groovy supports the following built-in helper method for these classes.

DOM class

Method

Description/Equivalent longhand

NodeList

.iterator()

same as for loop, enables closures, e.g. findAll, every, etc.

In addition, the DOMCategory class provides numerous additional helper methods and syntax shortcuts:

DOM class

Method

Description/Equivalent longhand

Element

.'child' or .child or ['child']

similar to .getElementsByTagName('child') but only gets direct children

Element

.children() or .'*' or ['*']

special case of above which finds all children regardless of tagname (plus text nodes)

Element

.'@attr' or ['@attr']

.getAttribute('attr')

Element

.attributes()

equivalent to .attributes returns a NamedNodeMap

Element

.text()

.firstChild.nodeValue (or textContent if you are using Xerces)

Element

.name()

.nodeName

Element

.parent() or .'..' or ['..']

.parentNode

Element

.depthFirst() or .'**'

depth-first traversal of nested children

Element

.breadthFirst()

breadth-first traversal of nested children

Node

.toString()

text node value as a String

NodeList

.size()

.length

NodeList

.list()

converted to a list of nodes

NodeList

[n]

.item(n)

NodeList

.text()

.collect{ it.text() }

NodeList

.child

flattened version of .child for each node in the NodeList

NamedNodeMap

.size()

.length

NamedNodeMap

.'child' or .child or ['child']

.getNamedItem(elementName).nodeValue

All these methods return standard Java classes (e.g. String and List) or standard DOM classes (e.g. Element, NodeList), so there are no new classes to learn, just some improved syntax.

Example

This example assumes the following class is already on your CLASSPATH:

XmlExamples.groovy

Here is an example of using Groovy's DOMCategory:

 

Search

Results of your search request can come from various sources: the Groovy website itself, the JIRA issues, the API documentation, as well as a few other interesting Groovy-related blogs.

  By  -  pages  -  views  - last modified