Heim > Backend-Entwicklung > XML/RSS-Tutorial > Codebeispiel für die Implementierung der gegenseitigen Bean- und XML-Konvertierung durch XStream

Codebeispiel für die Implementierung der gegenseitigen Bean- und XML-Konvertierung durch XStream

黄舟
Freigeben: 2017-03-31 14:37:43
Original
2701 Leute haben es durchsucht

1. Importieren Sie das JAR-Paket

<dependency>
	<groupId>com.thoughtworks.xstream</groupId>
	<artifactId>xstream</artifactId>
	<version>1.4.8</version>
</dependency>
Nach dem Login kopieren

2. Wichtige Anmerkungen

@XStreamAlias ​​​​definiert den Alias ​​

@XStreamAsAttribute ist als definiert Attribut

@XStreamOmitField Ignore

@XStreamConverter Prozessdatumsformat

@XStreamImplicit(itemFieldName = "roles") ProzessListe

3. Beispiel

1. Definieren Sie JavaBean

import java.util.Date;
import java.util.List;

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.annotations.XStreamOmitField;
import com.tzz.util.xml.DateConverter;

@XStreamAlias("user")
public class User {

	@XStreamAsAttribute
	private Integer id;
	private String name;
	@XStreamOmitField
	private int age;
	private String sex;
	@XStreamConverter(value = DateConverter.class)
	private Date birthday = new Date();
	@XStreamImplicit(itemFieldName = "roles")
	private List<Role> roles;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

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

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public List<Role> getRoles() {
		return roles;
	}

	public void setRoles(List<Role> roles) {
		this.roles = roles;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
}
Nach dem Login kopieren
import com.thoughtworks.xstream.annotations.XStreamAlias;

@XStreamAlias("role")
public class Role {

	private Integer id;
	private String name;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}
Nach dem Login kopieren

2. Konvertierungstool-Klasse

import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.dom4j.Element;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.core.util.QuickWriter;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;
import com.thoughtworks.xstream.io.xml.XppDriver;

public class XStreamXmlUtil {

	/** XML转Bean对象 */
	@SuppressWarnings("unchecked")
	public static <T> T xmlToBean(String xml, Class<T> clazz) {
		XStream xstream = new XStream();
		xstream.registerConverter(new DateConverter());
		xstream.autodetectAnnotations(true);
		xstream.processAnnotations(clazz);
		xstream.setClassLoader(clazz.getClassLoader());
		return (T) xstream.fromXML(xml);
	}

	/** Bean对象转XML */
	public static String beanToXml(Object bean) {
//		return "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + new XStream().toXML(bean);
		XStream xstream = new XStream();
		xstream.registerConverter(new DateConverter());
		xstream.autodetectAnnotations(true);
		return xstream.toXML(bean);
	}
}
Nach dem Login kopieren

3. Testklasse

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.junit.Test;

import com.tzz.test.util.xml.entity.Role;
import com.tzz.test.util.xml.entity.User;
import com.tzz.util.xml.XStreamXmlUtil;

public class TestXStreamXmlUtil {

	@Test
	public void testBeanToXml() {
		try {
			User user = new User();
			user.setId(1);
			user.setName("Test");
			user.setAge(20);
			user.setSex("1");
			user.setBirthday(new Date());
			Role role = new Role();
			role.setId(1);
			role.setName("角色1");
			Role role2 = new Role();
			role2.setId(2);
			role2.setName("角色2");
			List<Role> roles = new ArrayList<Role>();
			roles.add(role);
			roles.add(role2);
			user.setRoles(roles);
			String xml = XStreamXmlUtil.beanToXml(user);
			System.out.println(xml);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Test
	public void testXmlToBean() {
		String xml = 
		  "<user id=&#39;1&#39;>"+
			  "<name>Test</name>"+
			  "<sex>1</sex>"+
			  "<birthday>2016-03-10 16:12:46</birthday>"+
			  "<roles>"+
			    "<id>1</id>"+
			    "<name>角色1</name>"+
			  "</roles>"+
			  "<roles>"+
			    "<id>2</id>"+
			    "<name>角色2</name>"+
			  "</roles>"+
		   "</user>";
		User user = XStreamXmlUtil.xmlToBean(xml, User.class);
		System.out.println(user.getId() + "--" + user.getName());
		List<Role> roles = user.getRoles();
		for (Role r : roles) {
			System.out.println(r.getName());
		}
	}
}
Nach dem Login kopieren

4. Testergebnisse

4.1. TestBeanToXml-Methode ausführen

<user id="1">
  <name>Test</name>
  <sex>1</sex>
  <birthday>2016-03-10 17:35:41</birthday>
  <roles>
    <id>1</id>
    <name>角色1</name>
  </roles>
  <roles>
    <id>2</id>
    <name>角色2</name>
  </roles>
</user>
Nach dem Login kopieren

4.2. TestXmlToBean-Methode ausführen

1--Test
角色1
角色2
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonCodebeispiel für die Implementierung der gegenseitigen Bean- und XML-Konvertierung durch XStream. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage