用的是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
示例:    
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文件 - @XML***相关推荐

  1. generator自动生成mybatis的xml配置

    generator自动生成mybatis的xml配置.model.map等信息: 1.下载mybatis-generator-core-1.3.2.jar包.        网址:http://cod ...

  2. MyBatis 逆向工程(MyBatis 自动生成接口以及xml)的使用

    刚学MyBatis逆向工程(还以为要反汇编呢.....) MyBatis逆向工程 个人理解就是链接数据库自动生成相关的增删改查相关的类 以及xml文件 (其中有一些不足 应该就是多表链接的问题需要自己 ...

  3. [附下载]功能最强、高效易用的AI自动标注软件免费用了,兼容LabelImg格式xml,支持各种yolo、ssd、rcnn已训练模型以及OCR、形状匹配、轮廓匹配等各种定位方式来自动生成标注文件

    你将收获 掌握自动标注软件在Windows下系统配置方法 掌握利用灵活搜索来自动生成标注文件的方法 掌握利用训练好的网络模型来自动生成标注文件的方法 掌握利用OCR文字识别来自动生成标注文件的方法 适 ...

  4. linux 进程间通信 dbus-glib【实例】详解四(上) C库 dbus-glib 使用(附代码)(编写接口描述文件.xml,dbus-binding-tool工具生成绑定文件)(列集散集函数)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  5. oracle jpa字段加注释,JPA 通过注解自动生成表,添加 字段名、类型、注释

    JPA 通过注解自动生成表,添加 字段名.类型.注释 发布时间:2018-04-13 16:27, 浏览次数:3806 , 标签: JPA JPA对象注解类型 @Table - 映射表名 @Id - ...

  6. 极客技术专题【003期】:java mvc 增删改查 自动生成工具来袭

    日期:2013-4-17  来源:GBin1.com 技术专题介绍 分享专题:java mvc 增删改查 自动生成工具来袭 分享人:激情燃烧的UI 授课时间:2013/04/19  21:00-22: ...

  7. 自动生成PDF文件(Java通过PDF模板自动生成PDF)

    思路: 1.创建PDF模板(先创建对应的excel文件,创建好后另存为PDF文件)即可. 2.使用Adobe Acrobat DC工具打开PDF文件,设置自己想要替换的内容. 3.maven项目引入依 ...

  8. java自动生成entity文件

    网上关于自动生成entity文件的代码很多,看了很多代码后,在先辈们的基础上再完善一些功能(指定多个表,全部表). 为了使用方便所以把两个类写在一个java文件中,所以大家可以直接拿这个java文件, ...

  9. java 生成dump文件_程序自动生成Dump文件

    前言:通过drwtsn32.NTSD.CDB等调试工具生成Dump文件,drwtsn32存在的缺点虽然NTSD.CDB可以完全解决,但并不是所有的操作系统中都安装了NTSD.CDB等调试工具.了解了m ...

  10. Android Studio的res自动生成的文件出错了_莫韵乐与bug的奇妙冒险

    Android Studio的res自动生成的文件出错了_莫韵乐与bug的奇妙冒险 无论学什么编程语言都要跟奇怪的bug过不去 奇怪的bug出现了 今天满怀欣喜地进行安卓开发学习,创建好一个新的项目之 ...

最新文章

  1. 9 行代码提高少样本学习泛化能力,代码已开源
  2. jQuery选择器和选取方法 http://www.cnblogs.com/MaxIE/p/4078869.html
  3. 常用抓包工具(可编程抓包工具)
  4. Caffe常用层参数介绍
  5. POJ 3974-Palindrome
  6. QT的QMutableVectorIterator类的使用
  7. ZeroMQ简介:一种高性能的异步消息传递库
  8. 分区怎么4k对齐_电脑升级SSD后,依然卡顿怎么解决?
  9. Datawhale 社区黑板报(第1期)
  10. 伍德里奇计量经济学第四章课后计算机作业,伍德里奇---计量经济学第4章部分计算机习题详解(MATLAB).pdf...
  11. Babelua 调试
  12. 用C++做的文本分割器(就是黑乎乎的那个)
  13. 人脸识别:Contrastive loss和梯度推到
  14. 小米电视ec、小米电视es、小米电视ea2022款的区别
  15. 使用python输出星号阵列
  16. 腾讯滑块识别-通用滑块识别
  17. 查询maven依赖的网址
  18. 再谈SG函数和SG定理
  19. 北师大 马原 自测题复习
  20. 在计算机的应用领域c ai的中文全称是,2010江西省计算机等级考试试题 二级C试题最新考试试题库(完整版)...

热门文章

  1. python获取set中某些元素_取集合中元素_Python Set集合
  2. 学生成绩表的常用查询
  3. C语言-学生成绩链表处理
  4. 学计算机得肩周炎,电脑工作者更易患肩周炎 肩周炎的自我按摩方法
  5. 数据库模型:关系模型、层次模型、网状模型
  6. 电容或电感的电压_电流,电压,电阻,电容和电感
  7. c语言实现五子棋人人对战教程
  8. epoll与reactor模式
  9. matcher.group() 的基本使用,matcher分解系列(一)
  10. 相较国外代码托管平台 gitlab,咱们中国自己的代码托管平台有哪些优势?