Tôi đang cố gắng sử dụng Simple XML serializer. Tôi quan tâm hơn đến việc deserialization từ XML-> Java. Đây là mã của tôi như là một thử nghiệm đơn vị:Đơn giản hóa việc deserialization 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 + "]";
}
}
này hoạt động, nhưng lặp đi lặp lại @Attribute
chú thích (ở lĩnh vực này và tại đối số nhà xây dựng) trong lớp Địa chỉ trông xấu xí. Có cách nào để:
- chỉ đơn giản là tìm ra tên thuộc tính từ tên trường?
- có tuần tự bỏ qua đơn giản, để tôi có thể lấy đi chú thích hoặc là các trường hoặc đối số hàm tạo?
Nếu bạn đang tìm kiếm dễ dàng XML-> Java deserialization và không gắn liền với một gói cụ thể, đây là một thay thế: http://sourceforge.net/projects/practicalxml/ (lưu ý rằng tôi đã không đặt này như một câu trả lời bởi vì bạn dường như rất vui vẻ, đó không phải là cách tốt để đối xử với những người đang cố gắng giúp bạn) – kdgregory
@kdgregory Cảm ơn, tôi không gắn với một gói cụ thể - Tôi sẽ xem qua tệp thực hành. Xin vui lòng không lấy downvotes quá cá nhân - những đề nghị được cung cấp không có nơi nào gần giải quyết vấn đề của tôi và đã ồn ào, IMO. –
@kdgregory Ngày thứ hai suy nghĩ, tôi đã quá downvote hạnh phúc. Xin lỗi mọi người. –