Android 实体类转xml(JAXB)

xiaoxiao2025-04-12  13

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

转载请注明原文地址: https://www.6miu.com/read-5028114.html

最新回复(0)