最代码官方的gravatar头像
最代码官方 2015-01-22 11:51:42

java通过JAXB框架转换xml为java bean对象代码片段分享

java可以通过配置xml文件来转换为bean,代码片段如下:

JaxbUtil.java

package com.zuidaima.script.util;

import java.io.StringReader;
import java.io.StringWriter;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

public class JaxbUtil {

	/**
	 * JavaBean转换成xml
	 * 默认编码UTF-8
	 * @param obj
	 * @param writer
	 * @return 
	 */
	public static String convertToXml(Object obj) {
		return convertToXml(obj, "UTF-8");
	}

	/**
	 * JavaBean转换成xml
	 * @param obj
	 * @param encoding 
	 * @return 
	 */
	public static String convertToXml(Object obj, String encoding) {
		String result = null;
		try {
			JAXBContext context = JAXBContext.newInstance(obj.getClass());
			Marshaller marshaller = context.createMarshaller();
			marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
			marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);

			StringWriter writer = new StringWriter();
			marshaller.marshal(obj, writer);
			result = writer.toString();
		} catch (Exception e) {
			e.printStackTrace();
		}

		return result;
	}

	/**
	 * xml转换成JavaBean
	 * @param xml
	 * @param c
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static <T> T converyToJavaBean(String xml, Class<T> c) {
		T t = null;
		try {
			JAXBContext context = JAXBContext.newInstance(c);
			Unmarshaller unmarshaller = context.createUnmarshaller();
			t = (T) unmarshaller.unmarshal(new StringReader(xml));
		} catch (Exception e) {
			e.printStackTrace();
		}

		return t;
	}
}

projects.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<projectList>
	<projects>	
		<project>
			<id>1</id>
			<name><![CDATA[新闻发布1]]></name>
			<type>3</type>
			<userId>2</userId>
			<content><![CDATA[新闻1<img src="http://a.hiphotos.baidu.com/news/crop%3D31%2C0%2C598%2C359%3Bw%3D638/sign=094971085f6034a83dade2c1f6207878/3b87e950352ac65c80549e7af8f2b21193138a62.jpg">]]></content>
			<extendJson></extendJson>
			<channelId>21</channelId>
			<sourceId>3</sourceId>
		</project>
		
		<project>
			<id>2</id>
			<name><![CDATA[机构职能1]]></name>
			<type>1</type>
			<userId>2</userId>
			<content><![CDATA[机构职能1http://www.zuidaima.com]]></content>
			<extendJson></extendJson>
			<channelId>12</channelId>
			<sourceId>3</sourceId>
		</project>
			
	</projects>
</projectList>

Projects.java

package com.zuidaima.script.util;

import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;

import com.zuidaima.module.Project;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "projectList")
public class Projects {
	@XmlElementWrapper(name = "projects")
	@XmlElement(name = "project")
	private List<Project> projects;

	public List<Project> getProjects() {
		return projects;
	}

	public void setProjects(List<Project> projects) {
		this.projects = projects;
	}

}

Project.java

package com.zuidaima.module;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;

import net.sf.json.JSONObject;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.codehaus.jackson.annotate.JsonIgnore;

import com.zuidaima.constants.ModuleConstants;
import com.zuidaima.util.StringUtil;

@Entity
@Table(name = "cms_project")
public class Project extends BaseEntity {
	private String name = "";
	private int type;
	private long userId;
	private User user;
	private String content = "";
	private String htmlContent = "";
	private int status = ModuleConstants.MODULE_STATUS_NORMAL;
	private JSONObject extend;
	private String extendJson = "";
	private long channelId;
	private long sourceId;
	private BaseEntity source;
	private long targetId;

	public Project() {
		this.createTime = new Date();
		this.updateTime = createTime;
	}

	@Column(name = "name")
	public String getName() {
		return this.name;
	}

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

	@Column(name = "type")
	public int getType() {
		return this.type;
	}

	public void setType(int type) {
		this.type = type;
	}

	@Column(name = "user_id")
	public long getUserId() {
		return this.userId;
	}

	public void setUserId(long userId) {
		this.userId = userId;
	}

	@Transient
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	@Column(name = "content")
	public String getContent() {
		return this.content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	@Transient
	public String getHtmlContent() {
		if (content != null) {
			htmlContent = StringUtil.formatContent(content);
		}
		return htmlContent;
	}

	public void setHtmlContent(String htmlContent) {
		this.htmlContent = htmlContent;
	}

	@Column(name = "status")
	@JsonIgnore
	public int getStatus() {
		return this.status;
	}

	public void setStatus(int status) {
		this.status = status;
	}

	@JsonIgnore
	@Column(name = "extend_json")
	public String getExtendJson() {
		return this.extendJson;
	}

	public void setExtendJson(String extendJson) {
		this.extendJson = extendJson;
	}

	@Transient
	public JSONObject getExtend() {
		if (extendJson == null || extendJson.trim().equals("")) {
			extend = new JSONObject();
		} else {
			try {
				extend = JSONObject.fromObject(extendJson);
			} catch (Exception e) {
				extend = new JSONObject();
			}
		}
		return extend;
	}

	public void setExtend(JSONObject extend) {
		this.extend = extend;
	}

	@JsonIgnore
	@Column(name = "channel_id")
	public long getChannelId() {
		return this.channelId;
	}

	public void setChannelId(long channelId) {
		this.channelId = channelId;
	}

	@JsonIgnore
	@Column(name = "source_id")
	public long getSourceId() {
		return this.sourceId;
	}

	public void setSourceId(long sourceId) {
		this.sourceId = sourceId;
	}

	@JsonIgnore
	@Transient
	public BaseEntity getSource() {
		return source;
	}

	public void setSource(BaseEntity source) {
		this.source = source;
	}

	@JsonIgnore
	@Column(name = "target_id")
	public long getTargetId() {
		return this.targetId;
	}

	public void setTargetId(long targetId) {
		this.targetId = targetId;
	}

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}
}

调用:

String path = JaxbTest.class.getResource("").getFile();
File file = new File(path + "projects.xml");

String str = FileUtils.readFileToString(file, "utf-8");

Projects projects = JaxbUtil.converyToJavaBean(str, Projects.class);
for (Project project : projects.getProjects()) {
	project.setUpdateTime(project.getCreateTime());
	projectService.save(project);
}

打赏

最代码最近下载分享源代码列表最近下载
最代码最近浏览分享源代码列表最近浏览
1358849392  LV21 2022年11月11日
gan857569302  LV9 2020年6月23日
微量的记忆  LV10 2020年6月23日
梅西小王子  LV3 2020年5月17日
xuyongff  LV24 2020年3月3日
1906770275  LV1 2020年2月25日
luohaipeng  LV23 2019年12月4日
1059733285  LV3 2019年10月23日
hitlerqq 2019年10月16日
暂无贡献等级
yzc2219  LV9 2019年6月24日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友