4 Stimmen

Richtige Verwendung von org.simpleframework.xml.ElementMap?

Ich versuche, org.simpleframework.xml.ElementMap zu verwenden, um das folgende XML auf meine Java-Klassen abzubilden:

            blahblah one

        blahblah two

Ich konnte jedoch keine Lösung finden. Das Beste, was ich erreichen konnte, war, jedes Element in ein redundantes ... wie folgt einzuschließen:

            blahblah one

            blahblah two

Das obige XML-Stück funktioniert gut mit dem folgenden Java-Wrapper:

@Root(name="my_root_class")
public class MyRootClass {

    @ElementMap(name="my_map"
            ,key="id"
            ,keyType=String.class
            ,valueType=MyEntry.class
            ,attribute=true
            ,inline=false
            )
    private Map myEntries = new HashMap();

    // ... (getters/setters/..)

}

Die Elemente sind korrekt abgebildet:

MyRootClass [
    two: MyEntry [id=two, otherAttribute=def, myEntryElement=blahblah two]
    one: MyEntry [id=one, otherAttribute=abc, myEntryElement=blahblah one]
]

Dann versuche ich, "inline=true" zu setzen und das redundante zu entfernen. Wenn ich inline="true" setze, entry="my_entry" und das erste XML verwende, das ich oben in dieser Nachricht vorgestellt habe (das echte, das ich gerne verwenden würde), erhalte ich einen Fehler:

ExceptionUnable to satisfy @org.simpleframework.xml.ElementMap(keyType=class java.lang.String, inline=true, entry=my_entry, name=my_map, data=false, empty=true, value=, attribute=true, valueType=class com.mycomp.thomas.simpleXml.MyEntry, required=true, key=id) on field 'myEntries' private java.util.Map com.mycomp.thomas.simpleXml.MyRootClass.myEntries for class com.mycomp.thomas.simpleXml.MyRootClass at line 1

Ich habe auch mit value="my_entry" experimentiert oder sogar das in der XML-Datei in (das Standard) umbenannt, nichts funktioniert.

Kann mir jemand die richtigen Parameter sagen, die ich bei @ElementMap verwenden soll, um das oben in diesem Beitrag eingeführte XML zum Laufen zu bringen?

3voto

Vadzim Punkte 22887

Ich bin auch auf dieses Problem gestoßen.

Leider scheint die gewünschte kompakte Serialisierung mit der aktuellen Version des Simple Frameworks (2.7) unmöglich zu sein.

Beachten Sie, dass ein mehrere Jahre alter, immer noch nicht zusammengeführter Patch die Serialisierung von primitiven Werten als Eintragsattribute ermöglicht: https://sourceforge.net/tracker/index.php?func=detail&aid=3032849&group_id=112203&atid=661528

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X