java 关于xml的注解,自动生成xml文件

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

如果对要生成的 xml 格式有点些许的限制,就会对生成xml的对象就需要进行些许控制,控制对象的一个最可行的办法就是用注解。

(jdk 1.6 api:~mcpc/Java_Docs/api/index.html?javax/xml/bind/JAXBContext.html)

比较常用的几个:

@XmlRootElement:根节点

@XmlAttribute:该属性作为xml的attribute

@XmlElement:该属性作为xml的element,,且可以增加属性(name="NewElementName"),那么生成的xml串的elment的标签是NewElementName

示例:

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;@XmlElementpublic 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;@XmlAttributepublic 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;}@XmlElementpublic String getEleCode() {return eleCode;}public void setEleCode(String eleCode) {this.eleCode = eleCode;}}运行Test1类中main方法,执行结果:

<?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>

离开睁眼闭眼看见的城市,逃离身边的纷纷扰扰,

java 关于xml的注解,自动生成xml文件

相关文章:

你感兴趣的文章:

标签云: