Die Intersult liefert die wohl führenden XML- und SOAP-Werkzeuge im Java-Bereich. Das XML-Paket kann unter Maven 2 direkt aus dem Intersult Maven Repository integriert werden.
Neben primitiven Datentypen und verschachtelten Typen serialisiert der Marshaller auch Arrays, Lists und Maps.
Der XmlUnmarshaller wandelt serialisierte XML-Dateien zurück in Java-Klassen. Das Unmarshalling ist dabei genauso unkompliziert wie das Marshalling. Pojos sind ausreichend, mit Annotationen können zusätzliche Features gesteuert werden.
Folgendes Code-Beispiel zeigt einen Unmarshal-Marshal-Roundtrip:
String stringInput = IOUtils.toString(getClass().getResourceAsStream("Foo.xml"));
Foo foo = (Foo)MarshalUtils.unmarshall(stringInput);
String stringOutput = MarshalUtils.marshall(foo);
Ein weiteres Beispiel für Unmarshalling:
String input = "Test";
String xml = "<java.lang.String>" + input + "</java.lang.String>";
String output = (String)MarshalUtils.unmarshall(xml);
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>com.intersult</groupId>
<artifactId>com.intersult.maven</artifactId>
<executions>
<execution>
<goals>
<goal>generate-schema</goal>
</goals>
<configuration>
<schemas>
<schema>
<xsdPath>${project.build.directory}/generated/schema</xsdPath>
<xsd>file:/${basedir}/src/main/resources/XMLSchema.xsd</xsd>
<xsdPackage>org.w3.schema</xsdPackage>
</schema>
</schemas>
</configuration>
</execution>
</executions>
</plugin>
...
</plugin>
...
</build>
...
</project>
Die Generierung ist in den Maven2-Build-Zyklus integriert. Dadurch wird der Code zu genau dem richtigen Zeitpunkt generiert und erscheint z.B. auch in Eclipse-Projekten als Source-Folder.
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>com.intersult</groupId>
<artifactId>com.intersult.maven</artifactId>
<executions>
<execution>
<goals>
<goal>generate-ws</goal>
</goals>
<configuration>
<services>
<service>
<outputPath>${project.build.directory}/generated/weather</outputPath>
<wsdl>file:/${basedir}/src/main/resources/globalweather.wsdl</wsdl>
<packageName>net.webservicex.globalweather</packageName>
</service>
</services>
</configuration>
</execution>
</executions>
</plugin>
...
</plugin>
...
</build>
...
</project>