您的位置:首页 > 编程语言 > Java开发

java 关于xml的注解,自动生成xml文件 - @XML***

2016-05-25 16:17 417 查看
原文:http://blog.csdn.net/sundenskyqq/article/details/10452989      

用的是jdk自带的javax.xml.bind.JAXBContext将对象和xml字符串进行相互转换。

       如果对要生成的 xml 格式有点些许的限制,就会对生成xml的对象就需要进行些许控制,控制对象的一个最可行的办法就是用注解。
       (jdk 1.6 api:http://www.cs.uic.edu/~mcpc/Java_Docs/api/index.html?javax/xml/bind/JAXBContext.html
 
       比较常用的几个:
       @XmlRootElement:根节点
       @XmlAttribute:该属性作为xml的attribute
       @XmlElement:该属性作为xml的element,且可以增加属性(name="NewElementName"),那么生成的xml串的elment的标签是NewElementName

        示例:    

[java] view
plain copy

package test;  

  

import java.io.StringWriter;  

  

import javax.xml.bind.JAXBContext;  

import javax.xml.bind.JAXBException;  

import javax.xml.bind.Marshaller;  

  

import test.bean.EleClassA;  

import test.bean.EleClassB;  

import test.bean.RootClass;  

  

public class Test1 {  

  

    public static void main(String[] args) {  

        RootClass rc = new RootClass();  

        EleClassA a = new EleClassA();  

        EleClassB b = new EleClassB();  

          

        a.setAttrC("attrc");  

        a.setEleA("eleA");  

        a.setEleB("eleB");  

          

        b.setAttrPassword("attrPassword");  

        b.setAttrUserName("attrUsrName");  

        b.setEleCode("eleCode");  

          

        rc.setA(a);  

        rc.setB(b);  

        rc.setRoot("root");  

        rc.setRootA("rootA");  

          

          

        JAXBContext context;  

        try {  

            context = JAXBContext.newInstance(RootClass.class);  

            Marshaller mar = context.createMarshaller();  

            mar.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);  

            mar.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");  

              

            StringWriter writer = new StringWriter();  

              

            mar.marshal(rc, writer);  

              

            System.out.println(writer.toString());  

        } catch (JAXBException e) {  

            e.printStackTrace();  

        }  

          

    }  

}  

  

  

package test.bean;  

  

import javax.xml.bind.annotation.XmlElement;  

import javax.xml.bind.annotation.XmlRootElement;  

  

@XmlRootElement(name="rootclass")  

public class RootClass {  

  

    private EleClassA a;  

    private EleClassB b;  

    private String root;  

    private String rootA;  

      

    @XmlElement(name="eleClassA")  

    public EleClassA getA() {  

        return a;  

    }  

    public void setA(EleClassA a) {  

        this.a = a;  

    }  

    @XmlElement(name="EleclassA")  

    public EleClassB getB() {  

        return b;  

    }  

    public void setB(EleClassB b) {  

        this.b = b;  

    }  

    public String getRoot() {  

        return root;  

    }  

    public void setRoot(String root) {  

        this.root = root;  

    }  

    public String getRootA() {  

        return rootA;  

    }  

    public void setRootA(String rootA) {  

        this.rootA = rootA;  

    }  

      

}  

  

  

package test.bean;  

  

import javax.xml.bind.annotation.XmlAttribute;  

import javax.xml.bind.annotation.XmlElement;  

  

public class EleClassA {  

  

    private String eleA;  

    private String eleB;  

      

    private String attrC;  

  

    @XmlElement  

    public String getEleA() {  

        return eleA;  

    }  

  

    public void setEleA(String eleA) {  

        this.eleA = eleA;  

    }  

  

    @XmlElement(name="elebnewname")  

    public String getEleB() {  

        return eleB;  

    }  

  

    public void setEleB(String eleB) {  

        this.eleB = eleB;  

    }  

  

    @XmlAttribute()  

    public String getAttrC() {  

        return attrC;  

    }  

  

    public void setAttrC(String attrC) {  

        this.attrC = attrC;  

    }  

      

}  

  

  

package test.bean;  

  

import javax.xml.bind.annotation.XmlAttribute;  

import javax.xml.bind.annotation.XmlElement;  

  

public class EleClassB {  

  

    private String attrUserName;  

    private String attrPassword;  

      

    private String eleCode;  

      

    @XmlAttribute  

    public String getAttrUserName() {  

        return attrUserName;  

    }  

    public void setAttrUserName(String attrUserName) {  

        this.attrUserName = attrUserName;  

    }  

    @XmlAttribute(name="password")  

    public String getAttrPassword() {  

        return attrPassword;  

    }  

    public void setAttrPassword(String attrPassword) {  

        this.attrPassword = attrPassword;  

    }  

    @XmlElement  

    public String getEleCode() {  

        return eleCode;  

    }  

    public void setEleCode(String eleCode) {  

        this.eleCode = eleCode;  

    }  

      

      

}  

运行Test1类中main方法,执行结果:

[html] view
plain copy

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>  

<rootclass>  

    <eleClassA attrC="attrc">  

        <eleA>eleA</eleA>  

        <elebnewname>eleB</elebnewname>  

    </eleClassA>  

    <EleclassA attrUserName="attrUsrName" password="attrPassword">  

        <eleCode>eleCode</eleCode>  

    </EleclassA>  

    <root>root</root>  

    <rootA>rootA</rootA>  

</rootclass>  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息