java创建 xml_java创建和读取xml
本文使用的技术点:
JAXB2实现对象与XML之间的映射
JAXB是Java Architecture for XML Binding的缩写,可以将一个Java对象转变成为XML格式,反之亦然。我们把对象与关系数据库之间的映射称为ORM, 其实也可以把对象与XML之间的映射称为OXM(Object XML Mapping)。原来JAXB是Java EE的一部分,在JDK6中,SUN将其放到了Java SE中,这也是SUN的一贯做法。JDK6中自带的这个JAXB版本是2.0, 比起1.0(JSR 31)来,JAXB2(JSR 222)用JDK5的新特性Annotation来标识要作绑定的类和属性等,这就极大简化了开发的工作量。实际上,在Java EE 5.0中,EJB和Web Services也通过Annotation来简化开发工作。另外,JAXB2在底层是用StAX(JSR 173)来处理XML文档。
重要的注解和说明
注解
说明
@XmlRootElement
将类或enum类型映射到XML元素,类名或名作为根节点
@XmlAttribute
将JavaBean属性映射到XML属性
@XmlElement
将JavaBean属性映射到源自属性名的XML元素
@XmlAnyAttribute
将JavaBean属性映射到通配符属性的映射
@XmlAnyElement
将JavaBean属性映射到XML infoset或JAXB
@XmlElements
一个用于多XmlElement注解的容器。
@XmlID
将JavaBean属性映射到XML ID
@XmlIDREF
将JavaBean属性映射到XML IDREF
@XmlList
用来将一个属性映射到一个List
@XmlSchema
将包映射到XML名称空间
@XmlTransient
该属性无需映射到XML
示例代码:
Address类
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
public class Address {
@XmlAttribute
String province;
@XmlElement
String area;
@XmlElement
String street;
public Address() {}
public Address(String province, String area, String street) {
this.province = province;
this.area = area;
this.street = street;
}
@Override
public String toString() {
return "Address{" +
"province='" + province + '\'' +
", area='" + area + '\'' +
", street='" + street + '\'' +
'}';
}
}
Person类
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Person{
@XmlAttribute
private String name;
@XmlElement
private int age;
@XmlElement
private Address address;
public Person() {
}
public Person(String name, int age, Address address) {
this.name = name;
this.age = age;
this.address = address;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", address=" + address +
'}';
}
}
测试类:
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws JAXBException, IOException {
JAXBContext jaxbContext = JAXBContext.newInstance(Person.class);
//根据Person对象转换为person.xml文件
Marshaller marshaller = jaxbContext.createMarshaller();
Address address = new Address("广东省","深圳市","宝安区");
Person person = new Person("niannianjiuwang", 20, address);
FileWriter fileWriter = new FileWriter("D:\\person.xml");
marshaller.marshal(person, fileWriter);
//根据person.xml文件转换为对象
FileReader fileReader = new FileReader("D:\\person.xml");
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Person personNew = (Person) unmarshaller.unmarshal(fileReader);
System.out.println(personNew);
}
}
输出文件结果:
20
深圳市
宝安区
输出控制台结果:
Person{name='niannianjiuwang', age=20, address=Address{province='广东省', area='深圳市', street='宝安区'}}
AXB是Java Architecture for XML Binding的缩写,可以将一个Java对象转变成为XML格式,反之亦然。我们把对象与关系数据库之间的映射称为ORM, 其实也可以把对象与XML之间的映射称为OXM(Object XML Mapping)。原来JAXB是Java EE的一部分,在JDK6中,SUN将其放到了Java SE中,这也是SUN的一贯做法。JDK6中自带的这个JAXB版本是2.0, 比起1.0(JSR 31)来,JAXB2(JSR 222)用JDK5的新特性Annotation来标识要作绑定的类和属性等,这就极大简化了开发的工作量。实际上,在Java EE 5.0中,EJB和Web Services也通过Annotation来简化开发工作。另外,JAXB2在底层是用StAX(JSR 173)来处理XML文档。
重要的注解和说明
注解
说明
@XmlRootElement
将类或enum类型映射到XML元素,类名或名作为根节点
@XmlAttribute
将JavaBean属性映射到XML属性
@XmlElement
将JavaBean属性映射到源自属性名的XML元素
@XmlAnyAttribute
将JavaBean属性映射到通配符属性的映射
@XmlAnyElement
将JavaBean属性映射到XML infoset或JAXB
@XmlElements
一个用于多XmlElement注解的容器。
@XmlID
将JavaBean属性映射到XML ID
@XmlIDREF
将JavaBean属性映射到XML IDREF
@XmlList
用来将一个属性映射到一个List
@XmlSchema
将包映射到XML名称空间
@XmlTransient
该属性无需映射到XML
java创建 xml_java创建和读取xml相关推荐
- java反射 创建对象_Java反射――读取XML文件,创建对象
config.xml <?xml version="1.0" encoding="UTF-8"?> import java.io.*; import ...
- java dom4j 读取 xml_java使用dom4j读取xml示例
package xmlRead; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; impor ...
- java 动态解析 xml_通过读取xml文件动态建表
Ada female 21 13300008888 Ada@gmail.com 将上面的xml描述在数据库中创建一张表 import java.io.*; import java.sql.*; imp ...
- java quartz xml_java 使用quartz 定时xml 配置 与注解 以及注意事项
xml配置实现: 1.选择所需要的jar 4.2.2.RELEASE org.springframework spring-oxm ${spring.version} org.springframew ...
- camel Java to xml_java – 当Camel从XML文件加载路由时,在注册表中找不到Bean
我在camel中遇到问题,在运行时从 XML加载路由. 我搜索了我的问题,并在 http://grokbase.com/p/camel/users/117w8m6rbm/injecting-data- ...
- 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值
前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ...
- C#来创建和读取XML文档 [转]
C#来创建和读取XML文档 [关键词]:XML 录入:小鱼之家 来源:http://fisher.xundain.com 时间:2005-3-3 23:41:54 点击:85次 扩展标记语言XML( ...
- python读取xml编码gb2312_【转】python XML 操作总结(创建、保存和删除,支持utf-8和gb2312)...
最近写程序需要用到xml操作,看了看python.org上面的几个xml类库,还是一头雾水,感觉太学术化了,都那么吝惜写几个例子.所以自己整理了一下,算是个小总结,和大家分享一下吧. 对于简单的操作x ...
- CorelDRAW VBA - 读取XML文件,根据内容批量创建图形
目的 这篇教程将教会你如何使用 CorelDRAW VBA 来读取 XML 文件,并通过读取的内容来动态创建指定宽度和高度的矩形. 准备一个XML文件 打开记事本,粘贴以下内容,然后保存文件,文件名输 ...
最新文章
- python3.6.4安装教程-Python3.6.4官方版
- Python IDLE无法显示行号、Python IDLE shell里运行py文件
- 急救模式下安装rpm包
- tomcat 启动需要java环境吗?_三分钟教你Windows环境下,如何设置Tomcat随机自动启动?...
- 引用网易等相册的图片出现防盗链怎么办呢?看这里就迎刃而解!(转贴)
- latex中极限符号$与$$区别
- 共享一个可用的谷歌相机
- 威金病毒(viking)残留文件手动清除办法
- 19年恶意软件排行榜
- Confirming the Buzz about Hornets——2021美赛C题思路及题解
- 程序人生丨25岁毕业,月薪1万
- 行人重识别的挑战 与 最新进展 (35页PPT整理)
- 设置Word文档密码的两种方式
- 鸿蒙系统运行内存为啥只有8g,明明8G内存,系统却显示只有4G!为啥会这样?
- java数据结构通讯录管理系统_数据结构课程设计—通讯录管理系统
- 编程找出四位整数abcd 中满足下述关系的数:(ab+cd)(ab+cd)=abcd
- hooper篮球意思_这些篮球术语都什么意思?
- 项目规划管理 - 2
- 个人总结Android面试题目之二
- ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26‘ not foun Python GDAL
热门文章
- PHP-线程安全与非线程安全版本的区别
- Democracy Player 0.8.5
- as2的Key.isDown方法在as3的代替
- 加载类型库/dll时出错 的解决方法
- PHP Lumen Laravel 解决validate方法自定义message无效的问题
- adb devices 找不到夜神模拟器解决方法
- 腾讯广告算法大赛已启动,逆向算法,等你来战
- NetAug(网络增强)—Dropout的反面
- python开发接口故障码_Python代码样例
- java tomcat输出信息,java – 如何在Tomcat中记录stdout输出?