admin 管理员组文章数量: 1086865
java 关于xml的注解,自动生成xml文件
用的是jdk自带的javax.xml.bind.JAXBContext将对象和xml字符串进行相互转换。 如果对要生成的 xml 格式有点些许的限制,就会对生成xml的对象就需要进行些许控制,控制对象的一个最可行的办法就是用注解。 (jdk 1.6 api: .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文件
版权声明:本文标题:java 关于xml的注解,自动生成xml文件 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1686676356a23621.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论