Próbuję out Simple XML serializer. Bardziej interesuje mnie deserializacja z XML-> Java. Oto mój kod jako test jednostki:Prosta deserializacja XML
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 + "]";
}
}
To działa, ale powtarzające @Attribute
adnotacje (w zakresie i na argumencie konstruktora) w klasie Adres wyglądać brzydko. Czy jest jakiś sposób, aby:
- mają proste dowiedzieć się nazwę atrybutu od nazwy pola?
- mają proste serializacji ignorować, tak że mogę uciec z adnotacji albo pola lub argument konstruktora?
Jeśli szukasz łatwej do sformatowania XML-> Java i nie jesteś przywiązany do konkretnego pakietu, oto alternatywa: http://sourceforge.net/projects/practicalxml/ (pamiętaj, że nie umieściłem tego jako odpowiedź, ponieważ wydajesz się bardzo szczęśliwy, co nie jest dobrym sposobem na traktowanie ludzi, którzy próbują ci pomóc) – kdgregory
@kdgregory Dzięki, nie jestem przywiązany do konkretnej paczki - sprawdzę praktycznyxml. Proszę nie brać zbyt pochopnie opinii osobistych - proponowane sugestie nie były nigdzie bliskie rozwiązania mojego problemu i były głośne, IMO. –
@kdgregory Po chwili namysłu byłem zbyt szczęśliwy. Przepraszam wszystkich. –