`

Java Xstream xml 与bean之间的转换

    博客分类:
  • Java
阅读更多
xml文件如下:
<mvc>  
    <action name="user/select" class="com.cloud.mvc.controller.UserController" method="select">  
        <result name="success">/WEB-INF/view/index.jsp</result>  
        <result name="faild">/index.jsp</result>  
    </action> 
<action name="user/select" class="com.cloud.mvc.controller.UserController" method="select">  
        <result name="success">/WEB-INF/view/index.jsp</result>  
        <result name="faild">/index.jsp</result>  
    </action> 	
</mvc>  



代码如下:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamConverter;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter;
import com.thoughtworks.xstream.io.xml.DomDriver;

@XStreamAlias("mvc")
class MVC {
	@XStreamImplicit()
	@XStreamAlias("action")
	private List<Action> actionlist;

	public List<Action> getActionlist() {
		return actionlist;
	}

	public void setActionlist(List<Action> actionlist) {
		this.actionlist = actionlist;
	}
}

@XStreamAlias("action")
class Action {
	@XStreamAsAttribute()
	@XStreamAlias("name")
	private String name;
	@XStreamAsAttribute()
	@XStreamAlias("class")
	private String classname;
	@XStreamAsAttribute()
	@XStreamAlias("method")
	private String method;
	@XStreamImplicit
	@XStreamAlias("result")
	private List<Result> rlist;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getClassname() {
		return classname;
	}

	public void setClassname(String classname) {
		this.classname = classname;
	}

	public String getMethod() {
		return method;
	}

	public void setMethod(String method) {
		this.method = method;
	}

	public List<Result> getRlist() {
		return rlist;
	}

	public void setRlist(List<Result> rlist) {
		this.rlist = rlist;
	}
}

@XStreamAlias("result")  
@XStreamConverter(value = ToAttributedValueConverter.class, strings = { "value" }) 
class Result {
	@XStreamAsAttribute()
	private String name;
	
	private String value;
	

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getValue() {
		return value;
	}

	public void setValue(String value) {
		this.value = value;
	}	
}

public class GetList {
	public static void main(String args[]) throws IOException{
    	Class cls=MVC.class;
    	String xmlStr="";
    	File f=new File("D:"+File.separator+"test.xml");
    	BufferedReader  reader = null;
    	reader = new BufferedReader(new FileReader(f));
    	String tempString = null;
        int line = 1;
         while ((tempString = reader.readLine()) != null) {
        	 tempString=tempString.trim();
        	 xmlStr=xmlStr+tempString;
             line++;
         }
        reader.close();
    	System.out.println(xmlStr);
    	XStream xstream = new XStream(new DomDriver());
        xstream.processAnnotations(cls);
        MVC mvc=(MVC)xstream.fromXML(xmlStr);
       
        for(int i=0;i<mvc.getActionlist().size();i++){
        	Action action=mvc.getActionlist().get(i);
        	System.out.println(action.getClassname()+","+action.getName()+","+action.getMethod());
        	for(int j=0;j<action.getRlist().size();j++){
        		Result r=action.getRlist().get(j);
        		System.out.println(r.getName()+","+r.getValue());
        	}
        }
    }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics