This page (revision-87) was last changed on 16-Aug-2019 12:51 by Dieter Käppel

This page was created on 18-Aug-2009 22:25 by Dieter Käppel

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
87 16-Aug-2019 12:51 53 KB Dieter Käppel to previous Technologie ==> Technologien
86 16-Aug-2019 12:51 53 KB Dieter Käppel to previous | to last
85 28-Nov-2015 11:16 53 KB Dieter Käppel to previous | to last
84 28-Nov-2015 11:16 53 KB Dieter Käppel to previous | to last
83 18-Feb-2015 09:14 52 KB Dieter Käppel to previous | to last
82 18-Feb-2015 08:51 52 KB Dieter Käppel to previous | to last
81 25-Jul-2014 11:27 52 KB Dieter Käppel to previous | to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 105 changed one line
Neben primitiven Datentypen und verschachtelten Typen serialisiert der Marshaller auch Arrays, Lists und Maps.
Neben primitiven Datentypen und verschachtelten Typen serialisiert der Marshaller auch Arrays, Lists, Maps sowie benutzerdefinierte Datentypen.
At line 107 added 45 lines
Eigene Datentypen können immer durch die voll qualifizierte Angabe der Java-Klasse instantiiert werden:
{{{
Xml.unmarshall("<com.intersult.Test>...</com.intersult.Test>");
}}}
__Hinweis:__ Die Datentypen und Namen enthaltener Felder werden durch Reflection gemappt.
In den meisten Fällen hat man keine Java-Klassennamen als XML-Elemente. Daher stellt [Abraxas] die Möglichkeiten zum Mapping zur Verfügung.
Die einfachste Möglichkeit ist die Annotation der betreffenden Klasse mit XmlNamespace:
{{{
@XmlNamespace(value = "http://java.sun.com/xml/ns/javaee", localPart = "descriptionType")
public class DescriptionType {
...
}
}}}
Diese Klasse wird dann in der XmlConfig registriert:
{{{
XmlConfig config = new XmlConfig();
config.register(DescriptionType.class);
DescriptionType descriptionType = (DescriptionType)Xml.unmarshall("<descriptionType>...</descriptionType>", config);
}}}
Alternativ kann auch der Class-Path nach XmlNamespace gescannt werden:
{{{
XmlConfig config = new XmlConfig();
config.scanClassPath();
}}}
__Hinweis:__ Das Scannen des Class-Path birgt dir Gefahr, die Übersicht zu verlieren, welche Klassen für die aktuelle Operation registriert ist. Hat man eine große, veränderliche Menge von Klassen, kann dies von Vorteil sein. Class-Path-Scanning wird in Zukunft noch weiter ausgebaut werden.
Es können auch Klassen registriert werden, die nicht annotiert sind:
{{{
XmlConfig config = new XmlConfig();
config.getMapping().put(new QName("someName", "type"), SomeClass.class);
}}}
__Hinweis:__ Es handelt sich um eine Bidirectional Map (BidiMap), mit der sowohl das Marshalling als auch das Unmarshalling definiert wird. Es werden daher nur Einträge akzeptiert, welche für beide Richtungen eindeutig sind (auch als ein-eindeutig oder bijektiv bezeichnet). Mit einer weiteren Methode put(K key, V value, boolean reverse) können Einträge hinzugefügt werden, die nur einen QName auf eine Java-Klasse mappen.