- 浏览: 148152 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (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 1161java.lang.IllegalArgumentExcept ... -
正则口诀
2011-05-03 22:29 1176正则是每个程序员绕不开的堡垒,只有把它攻下来。我觉得 ... -
Ear、Jar、War文件之间
2011-03-23 22:37 1166在文件结构上,三者并没有什么不同,它们都采用zip或jar档案 ... -
Cannot create a generic array of T
2011-03-17 18:08 1903public static <T> T[] cre ... -
Java 位运算符
2011-03-09 22:48 959Java 定义的位运算(bitwise operators ) ... -
虚拟机中linux安装jdk
2011-01-15 17:38 2838主机:xp 虚拟机:VMware Workstation 7 ... -
tcdatabase-2
2010-11-03 22:33 906搜索操作:根据“字段 ... -
tcdatabase
2010-11-03 22:32 1051为何写tcdatabase tcdataba ... -
Collections.unmodifiableList()
2010-10-27 16:07 3020在《重构——改善既有代码的设计》一书中,有一种重构手法叫E ... -
java字节码
2010-10-11 07:13 980这一两年,在JVM上使用 ... -
Comparator和Comparable在排序中的应用
2010-09-17 15:49 867Comparator和Comparable在排序中的应用 当 ... -
浅复制与深复制
2010-09-17 15:19 8071.浅复制与深复制概念 ... -
apache.commons.beanutils.BeanUtils
2010-09-03 10:11 1437该class提供了一系列的静态方法操作业已存在的符合JavaB ... -
java学习之路
2010-08-26 13:45 801励志一下 http://forchenyun.iteye.co ... -
black 星期四
2010-08-19 11:08 764black 星期四~~~~~~~~~~~~~~~~~~
相关推荐
JDK注解@XmlRootElement
NULL 博文链接:https://danandyu8013.iteye.com/blog/1668480
@XmlRootElement(name = "xml") @XmlAccessorType(XmlAccessType.FIELD) public class Message { /** * 开发者微信号 */ @XmlElement(name = "ToUserName") private String toUserName; /** * 发送方帐号...
Sun 官方 J2ee 5.0 教程 The Java EE 5Tutorial For Sun Java System Application Server 9.1 Contents Preface ..................................................................................................
程式码范例public class XmlMatcherExampleTests { @XmlRootElement ( name = " foo " ) public static class MyJaxbThing { public String bar = " hello world " ; } @Test public void testJaxbElement () { ...
#mySky适用于my-sky应用程序的...将@XMLRootElement添加到模型中。 ##资源创建 客户资源 @Path("/customers") @Produces(MediaType.APPLICATION_JSON) public class CustomerResource { CustomerService customerSe
JSON 和 XML 服务都在工作……感谢 bean 类上的 @XmlRootElement 注释。 0.0.1-M3 使用 Spring Boot 的 JAX-WS SOAP 服务(代码优先)。 0.0.1-M4 使用 SOAPHandler 并通过 Spring Boot 进行日志记录。 JAX-WS ...
#Jersey-2 with Guice ... @XmlRootElement @XmlAccessorType ( XmlAccessType . FIELD ) @Entity public class User implements Serializable { private static final long serialVersionUID = 366534908950086
低于年份值必须等于或大于 2015 下面是一个例子: @XmlRootElement(name = "customer") public class Customer { @XmlElement @Min(2015) private int year; …..}现在让我们运行这个程序并发布一些数据。 要运行,...
jaxb-libs.jar 下载 JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML...JAXB允许JAVA人员将JAVA类映射为XML表示方式,常用的注解包括:@XmlRootElement,@XmlElement等等。
maven-jaxb2-plugin-0.14.0 下载 maven包 JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-...JAXB允许JAVA人员将JAVA类映射为XML表示方式,常用的注解包括:@XmlRootElement,@XmlElement等等。
jaxb-api-2.2.jar 下载 JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成...JAXB允许JAVA人员将JAVA类映射为XML表示方式,常用的注解包括:@XmlRootElement,@XmlElement等等。
java版女精灵源码使用 Eclipse 的 Java EE 7 项目创建 创建一个简单的动态 Web 项目 选择模块版本为“3.1” ...在Servers选项卡中,...@XmlRootElement @NamedQuery ( name = " findAllStudents " , query = " select s
import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name=getWeatherbyCityName,namespace=http://WebXml.com.cn/) public class CityReq { private String theCityName; public String getTh
jaxb-有效载荷-poc 概念证明,用于解决带有外部名称空间的XmlAnyElement,没有XmlRootElement和非JAXB可序列化对象的Java objetcs的问题 其作品 @franciscophilip
当前项目包含一套生成指定格式的xml 字符串内容,以及根据返回的字符串生成指定格式的map格式的内容;