我正在嘗試Simple XML serializer。我對XML-> Java的反序列化更感興趣。這裏是我的代碼作爲一個單元測試:簡單的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 + "]";
}
}
這工作,但反覆@Attribute
註釋(在外地和構造函數參數)的地址類很醜陋。有沒有辦法:
- 有簡單的數字從字段名稱的屬性名稱?
- 有簡單的忽略序列化,以便我可以脫離註釋字段或構造函數參數嗎?
如果你正在尋找簡單的XML-> Java反序列化,並且不綁定到特定的包,這裏有一個替代方法:http://sourceforge.net/projects/practicalxml/(注意,我沒有把這個作爲一個答案,因爲你似乎很低調開心,這不是一個很好的方式來對待那些試圖幫助你的人) – kdgregory 2009-12-15 22:27:16
@kdgregory謝謝,我沒有綁定到一個特定的包 - 我會檢查actualxml。請不要親自採取降價措施 - 提供的建議遠遠不能解決我的問題,並且很嘈雜,國際海事組織。 – 2009-12-15 22:45:58
@kdgregory第二個想法,我太低興了。向所有人道歉。 – 2009-12-16 00:18:37