(javax)javaBean转xml
来源:互联网 发布:nba2k16捏脸中国人数据 编辑:程序博客网 时间:2024/06/05 19:12
一般与第三方公司进行交互时,经常会用到xml报文,生成xml的方式有多种,以前用map转xml,后来发现,在实际工作中,会有很多局限性。
后来改用javaBean转xml,觉得还挺方便的,下面上一下案例代码:
场景一:
该场景是生成(非多层级)xml
javaBean类:
package test.javabeantoxml;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "xml")
@XmlType(propOrder = { "amount"})
public class MOUNT {
@XmlElement
private String amount;
public String getAmount() {
return amount;
}
public void setAmount(String amount) {
this.amount = amount;
}
}
期望结果:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xml>
<amount>1</amount>
</xml>
实现代码:
public class TEST {
public static void main(String[] args) {
MOUNT mount = new MOUNT();
mount.setAmount("1");
String xmlstr = convertToXml(mount,"UTF-8");
System.out.println(xmlstr);
}
/**
* 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;
}
}
运行后就得到想要的结果咯。。。。
不过往往在工作中,没有那么简单地需求,很多时候,是需要生成包含list的xml报文。那该怎么办呢?
场景二:
生成多层级(list类型)xml
javabean一:
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 javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "xml")
@XmlType(propOrder = { "amount","addrList"})
public class MOUNT {
@XmlElement
private String amount;
public String getAmount() {
return amount;
}
public void setAmount(String amount) {
this.amount = amount;
}
@XmlElementWrapper(name="addrs")//指定父节点
@XmlElement(name = "addr")
private List<ADDR> addrList;
public List<ADDR> getAddrList() {
return addrList;
}
public void setAddrList(List<ADDR> addrList) {
this.addrList = addrList;
}
}
javabean二:
import javax.xml.bind.annotation.XmlType;
@XmlType(propOrder = { "prov","contry"})
public class ADDR{
@BeanPropertyCheck(require = true, zh = "省份")
private String prov;
@BeanPropertyCheck(require = true, zh = "市")
private String contry;
public String getProv() {
return prov;
}
public void setProv(String prov) {
this.prov = prov;
}
public String getContry() {
return contry;
}
public void setContry(String contry) {
this.contry = contry;
}
@Override
public String toString(){
return "{prov=" + prov + ",contry=" + contry +"}";
}
}
期望结果:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xml>
<amount>1</amount>
<addrs>
<addr>
<prov>江苏</prov>
<contry>南京</contry>
</addr>
<addr>
<prov>江苏</prov>
<contry>淮安</contry>
</addr>
</addrs>
</xml>
实现案例:
public class TEST {
public static void main(String[] args) {
MOUNT mount = new MOUNT();
mount.setAmount("1");
List<ADDR> addrList = new ArrayList<ADDR>();
ADDR addr = new ADDR();
addr.setProv("江苏");
addr.setContry("南京");
addrList.add(addr);
ADDR addr2 = new ADDR();
addr2.setProv("江苏");
addr2.setContry("淮安");
addrList.add(addr2);
mount.setAddrList(addrList);
String xmlstr = convertToXml(mount,"UTF-8");
System.out.println(xmlstr);
}
/**
* 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;
}
}
- (javax)javaBean转xml
- JavaBean转Xml与Xml转JavaBean
- javabean转xml
- JAXB JavaBean转xml
- JavaBean转xml
- JavaBean转XML
- jaxb xml转javaBean
- XStream - Javabean转XML文档
- 【转】xstream的使用介绍(javabean和xml互转)
- xml 与 JavaBean的互转
- XStream 解析xml 转 javaBean 问题
- XML转JavaBean的简单实现
- xml和javabean互转的方法
- xStream(javabean转换成xml)
- javax.xml.transform.TransformerFactoryConfigurationError:
- javax.xml.transform.TransformerFactoryConfigurationError
- javax.xml.transform.TransformerFactoryConfigurationError
- javax.xml.transform.TransformerFactoryConfigurationError
- CGLib动态代理原理及实现
- vuex的信息交流
- file文件操作
- oracle 表空间满了 追加数据文件
- Rxjava的原理以及基本用法
- (javax)javaBean转xml
- ueditor编辑器asp版不能上传图片的解决方法 500错误
- 高并发下线程安全的单例模式(最全最经典)
- 菜鸟前端日记9 (原生JS--字符串的操作方法)
- 两个条件分组统计sql
- Spring MVC静态资源处理
- 人工智能+旅游大数据的未来,将迎来酒店行业数据可视化
- Android线程间消息机制-Handler源码分析(FrameWork)
- MongoDB 更新文档