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
相关文章
相关标签/搜索