【正文】
lefirst/title descriptionMy first blog entry./description / titletutorial/title descriptionToday we have developed a nice alias tutorial. Tell your friends! NOW!/description / /entries/5 Converter機(jī)制XStream提供了Converter,使我們?cè)趏bjectxml時(shí),能對(duì)一些輸入輸出參數(shù)進(jìn)行類型轉(zhuǎn)換。 (, entries)。 ((person))。public class PersonConverter implements Converter { public boolean canConvert(Class clazz) { return false。然后返回到父結(jié)點(diǎn)。 return person。import 。 } catch (ParseException e) { throw new ConversionException((), e)。 return s == null ? s : ((String) s).trim()。import 。public class PersonTest { public static void main(String[] args) { Person person = new Person()。public class Tutorial { public static void main(String[] args) { XStream stream = new XStream()。 }}運(yùn)行以上,輸出結(jié)果如下:message type15/type/message當(dāng)然,如果上面這樣設(shè)置,很費(fèi)事,那么可以通過(guò)修改參數(shù),改變自動(dòng)掃描所有Annotations,如下:(true)。package 。需要添加如下3個(gè)jar包:將上面的3個(gè)jar包添加到類路徑下面。 } public void setLastname(String lastname) { = lastname。 }}運(yùn)行以上代碼,輸出結(jié)果如下:gregoriancalendar2011年10月30日 星期日/gregoriancalendar當(dāng)然,其中的時(shí)間隨著當(dāng)前時(shí)間而變。 ((date))。import 。 } public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { Person person = new Person()。 (())。import 。public class PersonTest { public static void main(String[] args) { Person person = new Person()。 (blog, )。 (new Entry(tutorial, Today we have developed a nice alias tutorial. Tell your friends! NOW!))。 (author, , writer)。 (new Entry(first, My first blog entry.))。public class Author { private String name。這兩句表示對(duì)于xml中的每個(gè)結(jié)點(diǎn),所映射的Java類。 (phonenumber, )。 } public void setFax(PhoneNumber fax) { = fax。 安裝XStream的安裝方法比較簡(jiǎn)單。如下圖所示:3 開(kāi)始一個(gè)例子 新建一個(gè)空的java project工程通過(guò)eclipse向?qū)陆ㄒ粋€(gè)Java Project工程,并將上面提的兩個(gè)類添加到類路徑下。 }}package 。 Person joe = new Person(Joe, Walnes)。也就是person結(jié)點(diǎn)映射到了Person類;而phonenumber則映射到了PhoneNumber類。 public Author(String name) { = name。 (new Entry(tutorial, Today we have developed a nice alias tutorial. Tell your friends! NOW!))。 ((teamBlog))。 XStream xstream = new XStream()。 (author, )。 (Guilherme)。import 。 ()。 ()。import 。 } public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { GregorianCalendar calendar = new GregorianCalendar()。 XStream自帶的ConverterXStream提供了很多Converter,并根據(jù)遇到的xml,獲取對(duì)應(yīng)的Converter。 } public int getAge() { return age。我們使用第六節(jié)中的代碼,如下:package omitfield。public class RendezvousMessage { private int messageType。 Annotations其它XStreamImplicitXStreamConverter()XStreamOmitField……32 / 32。 } }package 。import 。 }}package omitfield。 例子如下:class StringConverter extends { public Object fromString(String str) { Object s = (str)。 try { ((()))。import 。 ()。 }顧名思義,unmarshal是在將xml轉(zhuǎn)換成object時(shí)調(diào)用到,這段代碼告訴了XStream,reader的指針到下一個(gè)結(jié)點(diǎn),然后讀取結(jié)點(diǎn)的值。import 。 (person, )。 (author, , writer)。 ((teamBlog))。修改main函數(shù),如下: public static void main(String[] args) { Blog teamBlog = new Blog(new Author(Guilherme Silveira))。 (blog, )。 }}package 。直接進(jìn)入: String xml = (joe)。 (new PhoneNumber(123, 9999999))。 private String number。