我用XStream 转出的xml是这样
[code="xml"]
1
11
111
1111
2
22
222
2222
3
33
333
3333
[/code]
但我不希望吧phone暴漏出去,希望的输出结果是
[code="xml"]
1
11
111
2
22
222
3
33
333
[/code]
我试着用XSL 做个转换,但还是比较麻烦,有没有更简洁的办法
规则多的话,自己控制下
[code="java"] XStream xstream = new XStream();
Employee emp = new Employee();
emp.setEmpNo("1");
emp.setJob("bb");
emp.setPhone("111111111");
xstream.omitField(Employee.class, "phone");
String xml = xstream.toXML(emp);[/code]
你可以先把java bean 转换成map形式,并对指定字段进行过滤,然后再用xstream转换这个map对像
[code="java"]
public static void filter(String src, String dest) throws IOException {
BufferedReader r = new BufferedReader(new FileReader(src));
PrintWriter w = new PrintWriter(dest);
try {
String line;
int startIndex;
while ((line = r.readLine()) != null) {
startIndex = line.indexOf("");
if(startIndex==-1){
w.println(line);
}
}
} finally {
r.close();
w.close();
}
}[/code]
对于简单的xml文件,这个代码是适用的
可以通过注解(@XStreamOmitField)解决。
javabean:
[code="java"]
public class Employee {
private String empNo;
private String job;
@XStreamOmitField
private String phone;
public String getEmpNo() {
return empNo;
}
public void setEmpNo(String empNo) {
this.empNo = empNo;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
[/code]
[code="java"]
XStream xstream = new XStream();
Employee emp = new Employee();
emp.setEmpNo("1");
emp.setJob("bb");
emp.setPhone("111111111");
xstream.processAnnotations(Employee.class);
String xml = xstream.toXML(emp);
System.out.println(xml);
[/code]
[url]http://www.atool.org/xmlformat.php[/url] 在线格式化,php版本
http://xmlviewer.org 在线XML解析/XML格式化工具