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’
jar包地址