主要代碼 /** * Xstream 測試 * @return */ @RequestMapping("/forward/xstream") public String xstream(){ String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><epay><items><item><id>2</id><name>cyc1</name></item><item><id>1</id><name>cyc</name></item></items></epay>"; XStream xstream = new XStream(); //獲取生成的對象 TestVo testVo = getPerson(); //構建對應的節點(這裏很重要構建生成的Xml 文件或者對象的節點) xstream.alias("epay",TestVo.class); xstream.aliasField("items",TestVo.class, "list"); xstream.alias("item", tests.class); //將對象轉爲xml String xml = xstream.toXML(testVo); System.out.println("cyc==== XStream:"+xml); //將xml轉爲對象 TestVo testVos = (TestVo) xstream.fromXML(str); System.out.println("cyc==== testVos"+testVos); //將對象再次轉爲xml String xml2 = xstream.toXML(testVos); System.out.println("cyc==== XStream2:"+xml2); System.out.println("cyc==== Size:"+testVos.getList().size()); return "publicTpl/notChrome"; } public TestVo getPerson(){ TestVo testVo = new TestVo(); List<tests> list = new ArrayList<tests>(); for(int i=0;i<10;i++){ tests tests = new tests(); tests.setId("1"); tests.setName("cyc"); list.add(tests); } testVo.setList(list); return testVo; } TestVo類代碼: public class TestVo { private List<tests> list;java
public List<tests> getList() { return list; } public void setList(List<tests> list) { this.list = list; } @Override public String toString() { return "TestVo [list=" + list + "]"; }
} tests類代碼: public class tests { private String id; private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "tests [id=" + id + ", name=" + name + "]"; }app
}maven
輸出結果:ide
cyc==== XStream:<epay> <items> <item> <id>1</id> <name>cyc</name> </item> <item> <id>1</id> <name>cyc</name> </item> <item> <id>1</id> <name>cyc</name> </item> <item> <id>1</id> <name>cyc</name> </item> <item> <id>1</id> <name>cyc</name> </item> <item> <id>1</id> <name>cyc</name> </item> <item> <id>1</id> <name>cyc</name> </item> <item> <id>1</id> <name>cyc</name> </item> <item> <id>1</id> <name>cyc</name> </item> <item> <id>1</id> <name>cyc</name> </item> </items> </epay> cyc==== testVosTestVo [list=[tests [id=2, name=cyc1], tests [id=1, name=cyc]]] cyc==== XStream2:<epay> <items> <item> <id>2</id> <name>cyc1</name> </item> <item> <id>1</id> <name>cyc</name> </item> </items> </epay> cyc==== Size:2
(maven)所續的pom文件: <dependency> <groupId>xstream</groupId> <artifactId>xstream</artifactId> <version>1.2.2</version> </dependency>
注意事項:若是想在java 項目中運行這個須要添加一些關聯的包否則的話會報一個:測試
Exception in thread "main" com.thoughtworks.xstream.io.StreamException: Cannot create XmlPullParser at com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:56) at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1085) at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1076) at test.test3.main(test3.java:16) Caused by: org.xmlpull.v1.XmlPullParserException: could not load any factory class (even small or full default implementation); nested exception is: org.kxml2.io.XmlReader at org.xmlpull.v1.XmlPullParserFactory.newInstance(XmlPullParserFactory.java:225) at org.xmlpull.v1.XmlPullParserFactory.newInstance(XmlPullParserFactory.java:76) at com.thoughtworks.xstream.io.xml.XppDriver.createParser(XppDriver.java:57) at com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:54) ... 3 more