zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java与xml转换 — XStreamAlias详解编程语言

JAVA转换XML编程语言 详解 &# 8212
2023-06-13 09:11:49 时间

简化的API;
无映射文件;
高性能,低内存占用;
整洁的XML;
不需要修改对象;支持内部私有字段,不需要setter/getter方法
提供序列化接口;
自定义转换类型策略;

2.使用场景

Transport转换
Persistence 持久化对象
Configuration 配置
Unit Tests 单元测试
Interface服务之间XML消息的交互

3.model

实体类

import com.thoughtworks.xstream.annotations.XStreamAlias; 

 * @author ceshi 

 * @Title: Student 

 * @ProjectName ceshi 

 * @Description: TODO 

 * @date 2018/6/2817:29 

@XStreamAlias("Student_Message") 

public class Student { 

 private String id; 

 private String name; 

 private String age; 

 private String achievement; 

 public Student(String id,String name,String age,String achievement){ 

 this.id = id; 

 this.name = name; 

 this.age = age; 

 this.achievement = achievement; 

 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; 

 public String getAge() { 

 return age; 

 public void setAge(String age) { 

 this.age = age; 

 public String getAchievement() { 

 return achievement; 

 public void setAchievement(String achievement) { 

 this.achievement = achievement; 

 @Override 

 public String toString() { 

 return "Student{" + 

 "id=" + id + / + 

 ", name=" + name + / + 

 ", age=" + age + / + 

 ", achievement=" + achievement + / + 

 }; 

}

工具类

import com.thoughtworks.xstream.XStream; 

import com.thoughtworks.xstream.io.xml.DomDriver; 

 * @author ceshi 

 * @Title: XStreamUtils 

 * @ProjectName ceshi 

 * @Description: TODO 

 * @date 2018/6/2817:38 

public class XStreamUtils { 

 /** 

 * 将Object转换为xml 

 * @param obj 转换的bean 

 * @return bean转换为xml 

 public static String objectToXml(Object obj) { 

 XStream xStream = new XStream(); 

 //xstream使用注解转换 

 xStream.processAnnotations(obj.getClass()); 

 return xStream.toXML(obj); 

 /** 

 * 将xml转换为T 

 * @param T 泛型 

 * @param xml 要转换为T的xml 

 * @param cls T对应的Class 

 * @return xml转换为T 

 public static T T xmlToObject(String xml, Class T cls){ 

 XStream xstream = new XStream(new DomDriver()); 

 //xstream使用注解转换 

 xstream.processAnnotations(cls); 

 return (T) xstream.fromXML(xml); 

}

测试类

import org.junit.Test; 

 * @author ceshi 

 * @Title: JunitXStream 

 * @ProjectName ceshi 

 * @Description: TODO 

 * @date 2018/6/2817:29 

public class JunitXStream { 

 @Test 

 public void test(){ 

 Student s = new Student("1","张三","18","90"); 

 String xml = XStreamUtils.objectToXml(s); 

 xml = " ?xml version=/"1.0/" encoding=/"UTF-8/"? "+xml; 

 xml = xml.replaceAll("__","_"); 

 System.out.println(xml); 

 Student ss = XStreamUtils.xmlToObject(xml,Student.class); 

 System.out.println(ss); 

}

结果:

java与xml转换 -- XStreamAlias详解编程语言

pom:需要使用到 xstream-1.4.8.jar 

 dependency 

 groupId com.thoughtworks.xstream /groupId 

 artifactId xstream /artifactId 

 version 1.4.8 /version 

 /dependency 

注意事项:

1.XStream有一些小bug,在定义别名中的下划线“_”转换为xml后会变成“__”这个符号,下划线问题可以用下面这个解决

XStream xStream = new XStream(new XppDriver(new XmlFriendlyNameCoder( _- , _ )));

也可以像测试类中用:replaceAll( __ , _ ); 替换掉

 

18540.html

cjavaxml