最代码官方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); }
猜你喜欢
- java对象和xml相互转换的工具
- java自主研发OXM框架,支持xml和bean相互转换,支持注解
- java最简单的xml转换java类的方法
- java实体类与XML转换实例代码
- Java XML解析的四种方法总结
- java通过codehaus来实现json写入文件和读取文件成json对象
- java ArrayList数据对象按排序值大小倒叙排序
- JAVA对象任意深度克隆clone工具类分享
- java解析xml的四种方式
- java对象ArrayList和LinkedList的源码解析及其基本增删改查功能的实现(优化版本)
- java对象ArrayList和LinkedList的源码解析及其基本增删改查功能的实现
- java+vuejs导出pdf和word文件
请下载代码后再发表评论



gan857569302 LV92020年6月23日
微量的记忆 LV32020年6月23日
梅西小王子 LV32020年5月17日
xuyongff LV222020年3月3日
1906770275 LV12020年2月25日
luohaipeng LV232019年12月4日
1059733285 LV32019年10月23日
hitlerqq2019年10月16日
暂无贡献等级
yzc2219 LV92019年6月24日
997512374 LV12019年3月9日