- 浏览: 150950 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (87)
- seam/jsf (22)
- java (24)
- spring (6)
- hibernate (2)
- Mysql (4)
- web (1)
- JMS (0)
- 计算机(computer) (1)
- linux (3)
- eclipse (4)
- Javascript (1)
- xstream (3)
- JPA (2)
- 汇编 (1)
- HttpClient (1)
- quartz (1)
- J2EE (2)
- EJB (1)
- restful web (1)
- maven (1)
- TTServer (3)
- restlet (0)
- jquery (0)
- Firebug (0)
- jquery Masonry+Infinite-Scroll (0)
- JACOB (0)
- elasticsearch (0)
最新评论
-
tuspark:
关于ApplicationContextAware的详细介绍, ...
ApplicationContextAware -
hc_face:
应该是 环境被初始化的时候,bean 也一并被初始化吧。先后顺 ...
ApplicationContextAware -
奇林醉:
有点明白了
Collections.unmodifiableList() -
tcking:
HashSet不关心迭代的次序,也就是说下一次的迭代次序可能就 ...
HashSet LinkedHashSet TreeSet -
yzhw:
我要去试试
seam前端提速
JAXB : Java API for XML Binding
作用是 java对象 <---> xml文件 之间的转换
JAXB Annotation
@XmlRootElement // xml 文件的根元素
@XmlElement
@XmlAccessorType // 表明类内,什么样的成员 是 可以被xml 转化 传输的 可以是 FIELD PROPERTY ...
@XmlTransient
@XmlJavaTypeAdaptor
=========================================
下面是一个例子:
Boy.java
package jaxb;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlAccessType;
@XmlRootElement // 必须要标明这个元素
@XmlAccessorType(XmlAccessType.FIELD)
public class Boy {
String name = "CY";
}
JAXBTest.java
package jaxb;
import java.io.StringReader;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
public class JAXBTest {
public static void main(String[] args) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(Boy.class);
Marshaller marshaller = context.createMarshaller();
Unmarshaller unmarshaller = context.createUnmarshaller();
Boy boy = new Boy();
marshaller.marshal(boy, System.out);
System.out.println();
String xml = "<boy><name>David</name></boy>";
Boy boy2 = (Boy) unmarshaller.unmarshal(new StringReader(xml));
System.out.println(boy2.name);
}
}
下面是运行结果:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><boy><name>CY</name></boy>
David
先是marshall成 xml文件,
再是把 xml 文件 unmarshal 成 java object。
--------------------------------------------------
改动一:
@XmlAccessorType(XmlAccessType.FIELD) --> @XmlAccessorType(XmlAccessType.PROPERTY)
意思是 只有 属性 才能被转换成 xml 中的标签。
所以再运行的结果是:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><boy/>
CY
就是说 java object 转换成 xml 的时候,name 不是属性(因为没有 get set方法),所以name不转换成标签。
-----------------------------------------------------
改动二:
在 改动一 的基础上,给name属性添加 get set 方法。 再运行,结果为:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><boy><name>CY</name></boy>
David
由此 可见 @XmlAccessorType 这个annotation 的作用。
-----------------------------------------------------
改动三:
在改动二 的基础上,给Boy 再添加一个field, int age=10, 即:
package jaxb;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlAccessType;
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Boy {
String name = "CY";
int age = 10;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
显然,这个age 是不会被 转化 到xml 文件中的。解决办法是:
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlAccessType;
@XmlRootElement // bixude
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Boy {
String name = "CY";
@XmlElement
int age = 10;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
加上 @XmlElement annotation. 运行结果为:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><boy><age>10</age> <name>CY</name></boy>
David
--------------------------------------
对于根元素,可以设置属性:
@XmlRootElement(name="b" nameSpace="http://test")
这样,在生成的xml文件中,<boy> 标签 就会变为 <b> 标签。并且加上一个命名空间。
----------------------------------------
下面解释 @XmlJavaTypeAdaptor 的作用。
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Boy {
private String name = "CY";
private Address address; // 是一个接口
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在 java object 转换成 xml 的时候,接口Address 无法被转换。
所以 这里要加上 @XmlJavaTypeAdapter(AddressAdapter.class)
所以 要多写一个AddressAdaptor 类。
这个类会返回Address接口的一个具体实现类的对象。
这 就是 @XmlJavaTypeAdapter 的作用。
form:http://speed847.iteye.com/blog/454231
发表评论
-
在线安装jdk
2014-08-12 16:55 0yum -y list java* yum -y insta ... -
java敏感字
2013-04-07 16:25 0public class KeywordFilter { ... -
java
2012-11-27 15:13 0http://smallbee.iteye.com/blog/ ... -
Top 10
2012-08-17 17:41 0很多程序员响应,他们在推荐时也写下自己的评语。 以前就有国内网 ... -
数字签名
2011-12-02 10:45 0今天,我读到一篇好文章。 它用图片通俗易懂 ... -
jmock
2011-10-17 14:54 1197java.lang.IllegalArgumentExcept ... -
正则口诀
2011-05-03 22:29 1206正则是每个程序员绕不开的堡垒,只有把它攻下来。我觉得 ... -
Ear、Jar、War文件之间
2011-03-23 22:37 1200在文件结构上,三者并没有什么不同,它们都采用zip或jar档案 ... -
Cannot create a generic array of T
2011-03-17 18:08 1952public static <T> T[] cre ... -
Java 位运算符
2011-03-09 22:48 992Java 定义的位运算(bitwise operators ) ... -
虚拟机中linux安装jdk
2011-01-15 17:38 2886主机:xp 虚拟机:VMware Workstation 7 ... -
tcdatabase-2
2010-11-03 22:33 936搜索操作:根据“字段 ... -
tcdatabase
2010-11-03 22:32 1084为何写tcdatabase tcdataba ... -
Collections.unmodifiableList()
2010-10-27 16:07 3055在《重构——改善既有代码的设计》一书中,有一种重构手法叫E ... -
java字节码
2010-10-11 07:13 1003这一两年,在JVM上使用 ... -
Comparator和Comparable在排序中的应用
2010-09-17 15:49 897Comparator和Comparable在排序中的应用 当 ... -
浅复制与深复制
2010-09-17 15:19 8331.浅复制与深复制概念 ... -
apache.commons.beanutils.BeanUtils
2010-09-03 10:11 1470该class提供了一系列的静态方法操作业已存在的符合JavaB ... -
java学习之路
2010-08-26 13:45 823励志一下 http://forchenyun.iteye.co ... -
black 星期四
2010-08-19 11:08 800black 星期四~~~~~~~~~~~~~~~~~~
相关推荐
### JDK注解@XmlRootElement详解 在Java开发过程中,XML数据的序列化与反序列化是一项常见任务。为了方便实现这一过程,Java提供了JAXB(Java Architecture for XML Binding)框架,而`@XmlRootElement`注解正是...
当我们需要将Java对象转换为XML或从XML反序列化回Java对象时,`@XmlRootElement`注解起到了关键作用。这个注解是Java API for XML Processing (JAXB)的一部分,用于指定一个Java类作为XML文档的根元素。 `@...
Java是一种广泛使用的编程语言,尤其在处理XML(可...通过DOM、SAX或StAX生成XML字符串,再利用JAXB结合`@XmlRootElement`注解解析XML并转换成Map。了解和掌握这些技术对于任何Java开发者在处理XML数据时都至关重要。
JAXB (Java Architecture for XML Binding) 是Java平台上的一项标准技术,用于将XML文档与Java对象进行绑定,使得XML数据能够方便地在Java程序中使用。XJC是JAXB的一部分,它是一个命令行工具,用于从XML Schema ...
@XmlType 定义映射的一些规则,用在 class 类的注解,常与 @XmlRootElement,@XmlAccessorType 一起使用。 参数: * propOrder:指定映射 XML 时的节点顺序(常用)。 * factoryClass:指定 UnMarshal 时生成映射...
在JAXB中,@XmlRootElement注解用于指定一个Java类映射为XML文档的根元素。@XmlAnyElement注解用于指示JAXB框架在序列化或反序列化过程中处理未映射到Java类的XML元素。 接下来,我们来分析一下具体的代码片段。...
在上面的例子中,我们使用 @XmlRootElement 注解来标注 People 类,然后使用 JAXBContext 将 People 对象转换为 XML,并将 XML 转换回 People 对象。 JAXB 提供了许多有用的功能,例如可以将 Java 对象与 XML 进行...
在这个`Person`类中,`@XmlRootElement`标记类为XML文档的根元素,`@XmlElement`用于字段和属性,而`@XmlAttribute`则将字段映射到XML元素的属性。 ### 总结 JAXB是Java开发中处理XML的强大工具,通过`marshal`和`...
@XmlRootElement @Entity @Table(name = "datacenter") public class DataCenter { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long centerID; private String centerName; // getter ...
@XmlRootElement 注解用于类级别的注解,用于指定 Java 类对应的 XML 根元素。它通常与 @XmlType 和 @XmlAccessorType 一起使用。 例如: ```java @XmlType @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement...
2. 使用@XmlRootElement和@XmlElement等JAXB注解来注释数据模型类,以便能够正确地转换成XML格式。 ### 内容知识点解析 **新建一个springboot项目,加入依赖jackson-dataformat-xml**: 1. 使用Maven构建工具创建...
1. **注解驱动**:JAXB 2.0允许开发者使用注解来标记需要进行绑定的类和属性,如`@XmlRootElement`、`@XmlElement`、`@XmlAttribute`等,这使得代码更加简洁,无需编写大量的XML绑定文件。 2. **集成到JDK**:Java ...
`@XmlRootElement`用于标记一个Java类,表示这个类可以被映射为XML的根元素;`@XmlElement`则用于标记类的属性,表示这些属性将映射为XML元素。 例如,有一个简单的`Person`类: ```java @XmlRootElement public ...
例如,在给出的代码片段中,`Persion`类就是一个被JAXB支持的类,它使用了`@XmlRootElement`注解来声明这个类对应于XML文档中的根元素,而`@XmlAccessorType(XmlAccessType.FIELD)`注解则表明所有字段(而非getter和...
首先,JAXB的核心组件包括`@XmlRootElement`、`@XmlElement`、`@XmlAttribute`等注解,它们用于标记Java类和类的属性,以便JAXB知道哪些部分应该映射到XML文档的元素和属性上。例如,如果我们有一个简单的`Person`类...
在这个例子中,`@XmlRootElement`注解标识`Person`类为XML文档的根元素,而`@XmlElement`注解则用于指定哪些属性对应于XML元素。 接下来,我们需要创建一个JAXBContext实例,这通常通过传递类的Class对象来完成。...
最常见的注解有`@XmlRootElement`,用于标记作为XML根元素的类;`@XmlElement`,用于将类的字段或方法映射到XML元素;以及`@XmlAttribute`,用于将字段或方法映射到XML属性。 例如,假设我们有一个简单的`Person`类...
`@XmlRootElement`注解表示这是一个可被JAXB处理的根元素,`@XmlElement`表示该字段应该作为XML元素进行序列化或反序列化: ```java @XmlRootElement(name = "student") public class Student { @XmlElement(name ...
`@XmlRootElement`注解是Java JAXB(Java Architecture for XML Binding)库的一部分,它允许我们将这些对象序列化和反序列化为XML,这对于RESTful服务中的数据交换至关重要。例如,`Person`类的定义如下: ```java...
在上面的代码中,`@XmlRootElement`注解标记了类作为XML根元素,而属性上的`@XmlElement`注解则表示这些属性将被映射到XML元素。 接下来是JPA,它是Java EE规范的一部分,用于处理数据库操作。JPA提供了一种面向...