文章目录
- 使用JAXB将Java对象转xml
- 1. 要求生成的xml
- 2. Java对象
- 3. 封装的工具类
- 4. 测试
使用JAXB将Java对象转xml
1. 要求生成的xml
root>
result status="success" msg="成功"/>
root>
2. Java对象
RootVO.java
@Data
@XmlRootElement(name = "root")
@XmlAccessorType(XmlAccessType.FIELD)
public class RootVO {
@XmlElement(name = "result")
public ResultVO result;
@Data
@NoArgsConstructor
@AllArgsConstructor
@XmlRootElement(name = "result")
@XmlAccessorType(XmlAccessType.FIELD)
public static class ResultVO{
@XmlAttribute(name = "status")
public String status;
@XmlAttribute(name = "msg")
public String msg;
}
}
3. 封装的工具类
XmlUtil.java
public class XmlUtil {
public static String objToXml(Object obj) {
try {
//创建JAXB对象,用于映射java类和xml
JAXBContext context = JAXBContext.newInstance(obj.getClass());
//创建Marshaller对象,用于将java对象序列化为xml
Marshaller marshaller = context.createMarshaller();
//设置编码格式
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
//格式化生成xml
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
//将java对象序列化为xml
marshaller.marshal(obj, byteArrayOutputStream);
return byteArrayOutputStream.toString("UTF-8");
} catch (JAXBException | UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
}
4. 测试
public static void main服务器托管网(String[] args) {
RootVO rootVO = new RootVO();
RootVO.ResultVO resultVO = new RootVO.ResultVO("success","成功");
rootVO.setResult(resultVO);
String xmlContent = XmlUtil.objToXml(rootVO);
System.out.println(xmlContent);
}
输出结果:
root>
result status="success" msg="成功"/>
root>
取掉standalone
public static void main(String[] args) {
RootVO rootVO = new RootVO();
RootVO.ResultVO resultVO = new RootVO.ResultVO("success","成功");
rootVO.setResult(resultVO);
String xmlContent = XmlUtil.objToXml(rootVO);
System.out.println(xmlContent.replace("standalone="yes"", ""));
}
输出结果:
root>
result status="success" msg="成功"/>
root>
服务器托管,北京服务器托管网服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: C++面试八股文:std::vector了解吗?
某日二师兄参加XXX科技公司的C++工程师开发岗位第23面: 面试官:vector了解吗? 二师兄:嗯,用过。 面试官:那你知道vector底层是如何实现的吗? 二师兄:vector底层使用动态数组来存储元素对象,同时使用size和capacity记录当前元素…