This project contains a collection if Java util classes, with a small focus on xml, io and lang type of utils.
Usage is documented in the javadoc.
Get a root Element from a String.
Element xml = DocumentUtil.getDocumentElement("<my><name>Myname</name><rep><disap/></rep></my>");
Get content from required element.
String name = ElementUtil.getContent(ElementUtil.getUniqueChild(xml,"name"));
Get a List:
List names = ElementUtil.getElementsByTagName(xml,"name");
Get by XPath
Node n = XPathUtil.selectNodes(xml,"/my/name");
Set new element content
Element rep = ElementUtil.getUniqueChild(xml,"rep");
Element elem = DocumentUtil.getDocumentElement("<my-newdisap><hej/><my-newdisap>");
ElementUtil.setElement(rep, elem);
Which would look like:
<my><rep><my-newdisap><hej/><my-newdisap></rep></my>
And don't forget the CatalogResolver!
Write input to output
IOHelper.connect(inputStream, outputStream);
Stream a DOM Document
DOMInputStream dis = new DOMInputStream(document); IOHelper.connect(dis, myOutpoutStream);
Filter XML
<copy todir="/home/pra/src/jboss-installer/dist//jboss" overwrite="true">
<fileset dir="${tmp.dir}/jbossinstall/">
<include name=" **\/conf/jboss-service.xml"/>
</fileset>
<filterchain>
<filterreader classname="org.backsource.ant.XmlFilter">
<param value="${jboss.jndi.jnp.port}" name="//mbean/attribute[@name='Port'][text()='1099']" type="replace"/>
<param value="${jboss.webservice.port}" name="//mbean/attribute[@name='Port'][text()='8083']" type="replace"/>
<param value="${jboss.rmi.object.port}" name="//mbean/attribute[@name='RMIObjectPort']" type="replace"/>
</filterreader>
</filterchain>
</copy>
The xmlescaper tool is greate to have when writing javadocs for example, since it does exactly what it says:
java -jar xmlescaper.java -
With xpath tools its seasy to test xpath expressions on the command line (even boolean ones):
java -jar target/xpath.jar project.xml '/project/dependencies/dependency/id'