Android 实体类转xml(JAXB)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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’

jar包地址

猜你喜欢

转载自blog.csdn.net/qq_26841579/article/details/83503660
今日推荐