版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26841579/article/details/83503660
1,maven上jar包 导入,可以编译但是无法通过,怀疑是jar不全。最后换了一个jar包。
一,实体类转xml
/**
* 对象转xml
* @param obj
* @return
*/
public String toXml(Object obj){
String xml=null;
try {
JAXBContext jc = JAXBContext.newInstance(TestList.class);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
// 1) 隐去报文头的生成, Marshaller.JAXB_FRAGMENT默认为false
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
StringWriter writer = new StringWriter();
// 2) 自定义生成
writer.write("<gs ver=\"1.0\" function=\"技师资料查询\" mode=\"request\">\n");
marshaller.marshal(obj, writer);
System.out.println(writer.toString()+"\n</gs>");
xml=writer.toString();
//XMLEventWriter的类文
}catch (Exception e){
}
return xml;
}
二,集合类转XML
/**
* 集合
*/
/**
* 集合转xml
* @param list
* @return
*/
public String toXmlList(List<Object> list){
String xmlList=null;
try {
JAXBContext jc = JAXBContext.newInstance(TestList.class);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
// 1) 隐去报文头的生成, Marshaller.JAXB_FRAGMENT默认为false
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
StringWriter writer = new StringWriter();
// 2) 自定义生成
writer.write("<gs ver=\"1.0\" function=\"技师资料查询\" mode=\"request\">\n");
marshaller.marshal(list, writer);
System.out.println(writer.toString()+"\n</gs>");
xmlList=writer.toString();
//XMLEventWriter的类文
}catch (Exception e){
}
return xmlList;
}
效果:
<gs ver="1.0" function="技师资料查询" mode="request">
<root>
<listbean>
<id>1</id>
<name>小明</name>
<pwd>123</pwd>
</listbean>
<listbean>
<id>2</id>
<name>小红</name>
<pwd>643</pwd>
</listbean>
<listbean>
<id>1</id>
<name>小王</name>
<pwd>2323</pwd>
</listbean>
<listbean>
<id>1</id>
<name>小陈</name>
<pwd>2323</pwd>
</listbean>
</root>
</gs>
Process finished with exit code 0
集合类
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="root")//设置结点名称。不设置默认是实体类的类名
public class TestList {
private List<TestBean> listbean;
public List<TestBean> getListbean() {
return listbean;
}
public void setListbean(List<TestBean> listbean) {
this.listbean = listbean;
}
}
这个依赖
implementation ‘javax.xml.stream:stax-api:1.0-2’