XStream 初探,很給力

主要代碼java

/**
     * Xstream 測試
     * [@return](https://my.oschina.net/u/556800)
     */
    @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;

	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 + "]";
	}
	
}
輸出結果:
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文件:app

<dependency>
    <groupId>xstream</groupId>
    <artifactId>xstream</artifactId>
    <version>1.2.2</version>
</dependency>

注意事項:若是想在java 項目中運行這個須要添加一些關聯的包否則的話會報一個:maven

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
相關文章
相關標籤/搜索