Index

Table of contents

JDOM

XML IO

document from xml String
public Document createDocument(String xml) {
        SAXBuilder builder = new SAXBuilder();
        try {
		return builder.build(new StringReader(xml));
        } catch (Exception e) {
            throw new RuntimeException("Unable to parse xml: " + xml, e);
        }
    }
from JDom element to xml String
private String toXml(Element element, Format format) {
        StringWriter writer = new StringWriter();
        try {

            XMLOutputter outputter = new XMLOutputter(format);
            outputter.output(element, writer);

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return writer.getBuffer().toString();
    }

formatting

compact XML Format
Format.getCompactFormat()
human readable XML format
Format.getPrettyFormat()
full formatting example
private String formatXml(String string) {
        try {
            Document document = new SAXBuilder().build(new StringReader(string));
            StringWriter writer = new StringWriter();
            new XMLOutputter(Format.getPrettyFormat()).output(document, writer);
            return writer.getBuffer().toString();

        } catch (Exception e) {
            e.printStackTrace();
            return string;
        }
    }

searching

Search for elements with the given name
@SuppressWarnings("unchecked")
    public static List<Element> getElementsWithName(final Parent parent, final String name) {
        Iterator<Element> iterator = parent.getDescendants(new Filter() {
            @Override
            public boolean matches(Object object) {
                if (object instanceof Element) {
                    Element element = (Element) object;
                    if (element.getName().equalsIgnoreCase(name)) {
                        return true;
                    }
                }
                return false;
            }
        });
        List<Element> result = new ArrayList<Element>();
        while (iterator.hasNext()) {
            result.add(iterator.next());
        }
        return result;
    }
Search for single element with the given name
public static Element getElementWithName(final Parent parent, final String name) {
        List<Element> elements = getElementsWithName(parent, name);
        String failMessage = Str.sub("Expected 1 element with name % found $", name, elements.size());
        Validate.isTrue(elements.size() == 1, failMessage);
        return elements.get(0);
    }