有这样的javabean
public class People {
private String sex;
private List userList;
}public calss User {
private String name;
private String address;
}这样的javabean 用XStream 怎么才能转成这样格式的呢?<people>
<sex>sex</sex>
<user>
<name>name</name>
<address>address</address>
</user>
<user>
<name>name</name>
<address>address</address>
</user>
<user>
<name>name</name>
<address>address</address>
</user>
</people>或者说是 这样的xml用XStream 怎样才能转成 People 类呢???
public class People {
private String sex;
private List userList;
}public calss User {
private String name;
private String address;
}这样的javabean 用XStream 怎么才能转成这样格式的呢?<people>
<sex>sex</sex>
<user>
<name>name</name>
<address>address</address>
</user>
<user>
<name>name</name>
<address>address</address>
</user>
<user>
<name>name</name>
<address>address</address>
</user>
</people>或者说是 这样的xml用XStream 怎样才能转成 People 类呢???
public class People {
private String sex;
@XStreamImplicit
private List<User> userList; public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public List<User> getUserList() {
return userList;
} public void setUserList(List<User> userList) {
this.userList = userList;
}
}@XStreamAlias("user")
public class User {
private String name;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}public class WritePeople { public static void main(String[] args) {
People p = new People(); p.setSex("male"); List<User> list = new ArrayList<User>();
User u = new User();
u.setName("zhang");
u.setAddress("beijing");
list.add(u);
p.setUserList(list);
//Serialize the object
XStream xs = new XStream();
xs.processAnnotations(People.class); //Write to a file in the file system
try {
FileOutputStream fs = new FileOutputStream("people.txt");
xs.toXML(p, fs);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
}
}public class ReadPeople { public static void main(String[] args) {
XStream xs = new XStream(new DomDriver());
xs.processAnnotations(People.class);
People p = new People(); try {
FileInputStream fis = new FileInputStream("people.txt");
xs.fromXML(fis, p); //print the data from the object that has been read
System.out.println(p.getUserList().get(0).getName()); } catch (FileNotFoundException ex) {
ex.printStackTrace();
}
}
}
//getter,setter}public class Sex{ private String sex; //getter,setter
}
public classs User{ private String name; private String address; //getter,setter
}2.处理代码(这是读取lz提供的那种格式的xml,生成是类似的): xstream.alias("people", People.class);
xstream.alias("sex", Sex.class);
xstream.alias("user", User.class);
People people=(People)xstream.fromXML(response);
把2楼的Java代码加进来,(我就不啰嗦再写了。)
xstream.alias("sex", Sex.class);
xstream.alias("user", User.class);
People people=(People)xstream.fromXML(response); 如果 这样的话 那需要的xml 应该是这样的吧?
<people>
<sex>sex</sex>
<userList> <user>
<name>name</name>
<address>address</address>
</user>
<user>
<name>name</name>
<address>address</address>
</user>
<user>
<name>name</name>
<address>address</address>
</user>
</userList></people>我现在是由于某种原因不能要<userList>这个节点。不知道 有什么办法没有?
2.XStream问题基本就是dto结构的问题,至于读取还是生成,都是固定的模式
xs.addImplicitCollection(People.class, "userList");
这样的话也可以,但问题是 这个VO 有很多,需要 clone 很多份,这样也不太好,有没有这样的一个方法 来对它进行设置呢??
xs.setMode(XStream.NO_REFERENCES);楼主,你很好学嘛。
这个虽然也能实现,但用起来就得每个都 调用这个方法了 。你很强大!!!
http://topic.csdn.net/u/20111231/02/d1f7af41-c56e-42d7-abe3-a02a7fdd6f08.html求助。
<body>
<themeList totalCount="13">
<theme id="14">生态旅游</theme>
这种格式,如何识别
所以可以 用xtreamr 的这个useAttributeFor(Class clasz,String field) 方法。
clasz 对应的应该是themeList 所对应的vo, field 是他里面的一个属性
不知道 你说的是不是这个意思?