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

2 篇文章 0 订阅

 

       用的是jdk自带的javax.xml.bind.JAXBContext将对象和xml字符串进行相互转换。
       如果对要生成的 xml 格式有点些许的限制,就会对生成xml的对象就需要进行些许控制,控制对象的一个最可行的办法就是用注解。
       比较常用的几个:
       @XmlRootElement:根节点
       @XmlAttribute:该属性作为xml的attribute
       @XmlElement:该属性作为xml的element,且可以增加属性(name="NewElementName"),那么生成的xml串的elment的标签是NewElementName

        示例:   
      
  1. package test; 
  2.  
  3. import java.io.StringWriter; 
  4.  
  5. import javax.xml.bind.JAXBContext; 
  6. import javax.xml.bind.JAXBException; 
  7. import javax.xml.bind.Marshaller; 
  8.  
  9. import test.bean.EleClassA; 
  10. import test.bean.EleClassB; 
  11. import test.bean.RootClass; 
  12.  
  13. public class Test1 { 
  14.  
  15.     public static void main(String[] args) { 
  16.         RootClass rc = new RootClass(); 
  17.         EleClassA a = new EleClassA(); 
  18.         EleClassB b = new EleClassB(); 
  19.          
  20.         a.setAttrC("attrc"); 
  21.         a.setEleA("eleA"); 
  22.         a.setEleB("eleB"); 
  23.          
  24.         b.setAttrPassword("attrPassword"); 
  25.         b.setAttrUserName("attrUsrName"); 
  26.         b.setEleCode("eleCode"); 
  27.          
  28.         rc.setA(a); 
  29.         rc.setB(b); 
  30.         rc.setRoot("root"); 
  31.         rc.setRootA("rootA"); 
  32.          
  33.          
  34.         JAXBContext context; 
  35.         try
  36.             context = JAXBContext.newInstance(RootClass.class); 
  37.             Marshaller mar = context.createMarshaller(); 
  38.             mar.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 
  39.             mar.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); 
  40.              
  41.             StringWriter writer = new StringWriter(); 
  42.              
  43.             mar.marshal(rc, writer); 
  44.              
  45.             System.out.println(writer.toString()); 
  46.         } catch (JAXBException e) { 
  47.             e.printStackTrace(); 
  48.         } 
  49.          
  50.     } 
  51.  
  52.  
  53. package test.bean; 
  54.  
  55. import javax.xml.bind.annotation.XmlElement; 
  56. import javax.xml.bind.annotation.XmlRootElement; 
  57.  
  58. @XmlRootElement(name="rootclass"
  59. public class RootClass { 
  60.  
  61.     private EleClassA a; 
  62.     private EleClassB b; 
  63.     private String root; 
  64.     private String rootA; 
  65.      
  66.     @XmlElement(name="eleClassA"
  67.     public EleClassA getA() { 
  68.         return a; 
  69.     } 
  70.     public void setA(EleClassA a) { 
  71.         this.a = a; 
  72.     } 
  73.     @XmlElement(name="EleclassA"
  74.     public EleClassB getB() { 
  75.         return b; 
  76.     } 
  77.     public void setB(EleClassB b) { 
  78.         this.b = b; 
  79.     } 
  80.     public String getRoot() { 
  81.         return root; 
  82.     } 
  83.     public void setRoot(String root) { 
  84.         this.root = root; 
  85.     } 
  86.     public String getRootA() { 
  87.         return rootA; 
  88.     } 
  89.     public void setRootA(String rootA) { 
  90.         this.rootA = rootA; 
  91.     } 
  92.      
  93.  
  94.  
  95. package test.bean; 
  96.  
  97. import javax.xml.bind.annotation.XmlAttribute; 
  98. import javax.xml.bind.annotation.XmlElement; 
  99.  
  100. public class EleClassA { 
  101.  
  102.     private String eleA; 
  103.     private String eleB; 
  104.      
  105.     private String attrC; 
  106.  
  107.     @XmlElement 
  108.     public String getEleA() { 
  109.         return eleA; 
  110.     } 
  111.  
  112.     public void setEleA(String eleA) { 
  113.         this.eleA = eleA; 
  114.     } 
  115.  
  116.     @XmlElement(name="elebnewname"
  117.     public String getEleB() { 
  118.         return eleB; 
  119.     } 
  120.  
  121.     public void setEleB(String eleB) { 
  122.         this.eleB = eleB; 
  123.     } 
  124.  
  125.     @XmlAttribute() 
  126.     public String getAttrC() { 
  127.         return attrC; 
  128.     } 
  129.  
  130.     public void setAttrC(String attrC) { 
  131.         this.attrC = attrC; 
  132.     } 
  133.      
  134.  
  135.  
  136. package test.bean; 
  137.  
  138. import javax.xml.bind.annotation.XmlAttribute; 
  139. import javax.xml.bind.annotation.XmlElement; 
  140.  
  141. public class EleClassB { 
  142.  
  143.     private String attrUserName; 
  144.     private String attrPassword; 
  145.      
  146.     private String eleCode; 
  147.      
  148.     @XmlAttribute 
  149.     public String getAttrUserName() { 
  150.         return attrUserName; 
  151.     } 
  152.     public void setAttrUserName(String attrUserName) { 
  153.         this.attrUserName = attrUserName; 
  154.     } 
  155.     @XmlAttribute(name="password"
  156.     public String getAttrPassword() { 
  157.         return attrPassword; 
  158.     } 
  159.     public void setAttrPassword(String attrPassword) { 
  160.         this.attrPassword = attrPassword; 
  161.     } 
  162.     @XmlElement 
  163.     public String getEleCode() { 
  164.         return eleCode; 
  165.     } 
  166.     public void setEleCode(String eleCode) { 
  167.         this.eleCode = eleCode; 
  168.     } 
  169.      
  170.      
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方法,执行结果:
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
  2. <rootclass> 
  3.     <eleClassA attrC="attrc"> 
  4.         <eleA>eleA</eleA> 
  5.         <elebnewname>eleB</elebnewname> 
  6.     </eleClassA> 
  7.     <EleclassA attrUserName="attrUsrName" password="attrPassword"> 
  8.         <eleCode>eleCode</eleCode> 
  9.     </EleclassA> 
  10.     <root>root</root> 
  11.     <rootA>rootA</rootA> 
  12. </rootclass> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值