XmlRootElement的作用和用法
时间:2022-07-26
本文章向大家介绍XmlRootElement的作用和用法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
手动封装实体类转换成xml
实体类
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
/**
* @ClassName RequetsXml
* @Description TODO
* @Author xiongchao
* @Date 2020/7/14 10:23
**/
@XmlRootElement(name = "request")
public class RequetsXml {
@XmlElement(name = "casefile")
private CaseFile caseFile;
@XmlElement(name = "uploaded-file-id")
private String fileId;
public void setCaseFile(CaseFile caseFile) {
this.caseFile = caseFile;
}
public void setFileId(String fileId) {
this.fileId = fileId;
}
private static class CaseFile{
private String name;
@XmlElement(name = "isTmpFile")
private boolean isTmpFile;
@XmlElement(name = "modify-timestamp")
private String modifyTimStamp;
@XmlElement(name = "sdb-group-id")
private Integer groupId;
@XmlElement(name = "source-system-id")
private Integer sourceId;
public void setName(String name) {
this.name = name;
}
public void setTmpFile(boolean tmpFile) {
isTmpFile = tmpFile;
}
public void setModifyTimStamp(String modifyTimStamp) {
this.modifyTimStamp = modifyTimStamp;
}
public void setGroupId(Integer groupId) {
this.groupId = groupId;
}
public void setSourceId(Integer sourceId) {
this.sourceId = sourceId;
}
}
测试
public static void main(String[] args) throws JAXBException {
RequetsXml root = new RequetsXml();
root.setFileId("adsa45475454");
CaseFile caseFile = new CaseFile();
caseFile.setName("王凯");
caseFile.setTmpFile(false);
caseFile.setGroupId(1);
caseFile.setSourceId(0);
caseFile.setModifyTimStamp("1575454212");
root.setCaseFile(caseFile);
JAXBContext context = JAXBContext.newInstance(RequetsXml.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.marshal(root, System.out);
}
输出
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<request>
<casefile>
<name>王凯</name>
<isTmpFile>false</isTmpFile>
<modify-timestamp>1575454212</modify-timestamp>
<sdb-group-id>1</sdb-group-id>
<source-system-id>0</source-system-id>
</casefile>
<uploaded-file-id>adsa45475454</uploaded-file-id>
</request>
工具类封装
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.json.JSONException;
import org.json.XML;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
/**
*
* Class Name: XmlConvertUtil
* Description: xml格式转化工具类
*
*/
public class XmlConvertUtil {
/**
* xml转换成JavaBean
*
* @param xml xml格式字符串
* @param t 待转化的对象
* @return 转化后的对象
* @throws Exception JAXBException
*/
@SuppressWarnings({ "unchecked" })
public static <T> T convertToJavaBean(String xml, Class<T> t) throws Exception {
T obj = null;
JAXBContext context = JAXBContext.newInstance(t);
Unmarshaller unmarshaller = context.createUnmarshaller();
obj = (T) unmarshaller.unmarshal(new StringReader(xml));
return obj;
}
/**
* 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;
}
public static JSONObject xmlToJson(String xml) {
try {
org.json.JSONObject object = XML.toJSONObject(xml);
String jsonData = object.get("response").toString();
JSONObject jsonObject = JSON.parseObject(jsonData);
return jsonObject;
/*JSONObject result = (JSONObject) jsonObject.get("result");
JSONObject upload = (JSONObject) result.get("upload");
String uploadUrl = upload.get("url").toString();
String fildId = upload.get("upload-file-id").toString();*/
} catch (JSONException e) {
e.printStackTrace();
return null;
}
}
}
切记,实体类中的@XmlRootElement注解不可一省略,否则会抛异常
[特别重要] 补充一下,加上get方法之后,如果出现报错,在get方法上面添加注解@XmlTransient
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法