Home | Documentation | Forum | Issues | License | Contribute
Library for simple XML and JSON processing on the JVM (Java Virtual Machine), targeting Java and JVM-based scripting languages such as Groovy, JRuby, Jython, Javascript and Java Expression Language.
Spin is useful when you need to work with complex, text-based data formats (such as XML or JSON) without mapping to Java Objects.
Spin provides a comprehensible fluent API for working with different data formats through lightweight wrapper objects:
Given the following XML document as String
or InputStream
:
<?xml version=“1.0“ encoding=“UTF-8“ ?>
<customers>
<customer id="0001"><name>Jonny P</name></customer>
<customer id="0002"><name>Bobby G</name></customer>
<customer id="0003"><name>Mary T</name></customer>
</customers>
It can directly be worked on with Spin:
import static org.camunda.spin.Spin.*;
// get id of first customer
XML( xmlInput ).childElements("customer")
.get(0)
.attr("id")
.value();
// create new customer
SpinXmlTreeElement kate = XML( "<customer />" )
.attr("id", "0004")
.append( XML("<name>Kate S</name>") );
// append to existing list
XML( xmlInput ).append(kate);
// query by Id:
XML( xmlInput ).xPath("/customers/customer[@id='0002']").element();
Java provides a built-in Dom API along with a Parser. Spin provides a lightweight Wrapper around the Dom API which makes it easier to work with than the Dom API. You can access the underlying Dom object at any time by unwrapping it:
Element e = XML( xmlSource ).childElement("customer").unwrap();
Have a look at our contribution guide for how to contribute to this repository.
The source files in this repository are made available under the Apache License Version 2.0.