Einfache XML-Deserialisierung

Ich versuche aus der Einfache XML-serializer. Ich bin mehr daran interessiert, die Deserialisierung von XML->Java. Hier ist mein code als unit-test:

import java.io.StringReader;
import java.io.StringWriter;

import junit.framework.TestCase;

import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Root;
import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister;

public class SimpleTest extends TestCase {
    public void testWriting() throws Exception {
        StringWriter writer = new StringWriter();
        Address address = new Address("1234 Main Street", "San Francisco", "CA");
        Serializer serializer = new Persister();

        serializer.write(address, writer);
        System.out.println("Wrote: " + writer.getBuffer());
    }

    public void testReading() throws Exception {
        String input = "<address street='1234 Main Street' city='San Francisco' state='CA'/>";
        Serializer serializer = new Persister();
        System.out.println("Read back: " + serializer.read(Address.class, new StringReader(input)));
    }
}

@Root
class Address {
    @Attribute(name="street")
    private final String street;

    @Attribute(name="city")
    private final String city;

    @Attribute(name="state")
    private final String state;

    public Address(@Attribute(name="street") String street, @Attribute(name="city") String city, @Attribute(name="state") String state) {
        super();
        this.street = street;
        this.city = city;
        this.state = state;
    }

    @Override
    public String toString() {
        return "Address [city=" + city + ", state=" + state + ", street=" + street + "]";
    }   
}

Dies funktioniert, aber die wiederholte @Attribute Anmerkungen (auf dem Feld und an den Konstruktor-argument) in der Address-Klasse hässlich. Gibt es eine Möglichkeit zu:

  • haben einfach herausfinden das Attribut name aus dem Feldnamen?
  • haben, einfach ignorieren, Serialisierung, so dass ich bekommen kann Weg mit Anmerkungen entweder auf den Feldern oder bei der Konstruktor-argument?
Wenn Sie für eine einfache, XML->Java-Deserialisierung und sind nicht gebunden an ein bestimmtes Paket, hier ist eine alternative: sourceforge.net/projects/practicalxml (beachten Sie, dass ich nicht dies als eine Antwort, denn Sie scheinen sehr downvote glücklich, das ist nicht ein guter Weg, um behandeln Sie die Menschen, die versuchen Euch zu helfen)
Danke, ich bin nicht gebunden an eine bestimmte Paket - ich will check out practicalxml. Bitte nehmen Sie nicht die downvotes auch persönlich - die Anregungen, die angeboten wurden, bei weitem nicht die Lösung meines Problems und waren laut, IMO.
Am zweiten Gedanken, ich war zu downvote glücklich. Entschuldigung an alle.
Eine weitere sehr gute Bibliothek XStream. Ich habe in der Lage zu tun alles, was ich brauchte - bisher. 🙂

InformationsquelleAutor Binil Thomas | 2009-12-15

Schreibe einen Kommentar