- 浏览: 7935287 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
在JAXB中,其实不用annotation也是可以的,虽然比较麻烦,下面是一个例子:
另外一个POJO
然后下面的是一个XML文件,先展示的是将xml文件反序列化为CUSTOMER类,
主程序如下:
可以看到在Customer customer = je1.getValue();
这句之前,就是读入了xml文件,然后进行unmarshaller的操作,之后得到的是一个
JAXBElement的对象实例,然后通过getValue得到其Customer对象实例。然后
接下来的代码是将customer再重新序列化为xml了。
package blog.defaults; import java.util.List; public class Customer { private String firstName; private String lastName; private List<PhoneNumber> phoneNumbers; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public List<PhoneNumber> getPhoneNumbers() { return phoneNumbers; } public void setPhoneNumbers(List<PhoneNumber> phoneNumbers) { this.phoneNumbers = phoneNumbers; } }
另外一个POJO
package blog.defaults; public class PhoneNumber { private String foo; private String bar; public String getType() { return foo; } public void setType(String type) { this.foo = type; } public String getNumber() { return bar; } public void setNumber(String number) { this.bar = number; } }
然后下面的是一个XML文件,先展示的是将xml文件反序列化为CUSTOMER类,
<?xml version="1.0" encoding="UTF-8"?> <customer> <firstName>Jane</firstName> <lastName>Doe</lastName> <phoneNumbers> <number>555-1111</number> <type>work</type> </phoneNumbers> <phoneNumbers> <number>555-2222</number> <type>home</type> </phoneNumbers> </customer>
主程序如下:
package blog.defaults; import javax.xml.bind.*; import javax.xml.namespace.QName; import javax.xml.transform.stream.StreamSource; public class Demo { public static void main(String[] args) throws Exception { JAXBContext jc = JAXBContext.newInstance(Customer.class); StreamSource xml = new StreamSource("src/blog/defaults/input.xml"); Unmarshaller unmarshaller = jc.createUnmarshaller(); JAXBElement<Customer> je1 = unmarshaller.unmarshal(xml, Customer.class); Customer customer = je1.getValue(); JAXBElement<Customer> je2 = new JAXBElement<Customer>(new QName("customer"), Customer.class, customer); Marshaller marshaller = jc.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.marshal(je2, System.out); } }
可以看到在Customer customer = je1.getValue();
这句之前,就是读入了xml文件,然后进行unmarshaller的操作,之后得到的是一个
JAXBElement的对象实例,然后通过getValue得到其Customer对象实例。然后
接下来的代码是将customer再重新序列化为xml了。
评论
2 楼
yonge812
2013-08-27
请问如果对象中的属性名称与xml的节点不一致,应该如何转换?
1 楼
yidao620c
2012-08-06
其实这种简单的不加annotation的xml序列化和反序列化可以用xstream,复杂的采用jaxb。
发表评论
-
复习:强迫线程顺序执行方式
2019-01-03 23:42 1564方法1: 三个线程,t1,t2,t3,如果一定要按顺序执行, ... -
(转)不错的前后端处理异常的方法
2019-01-02 23:16 2015前言 在 Web 开发中, 我们经常会需要处理各种异常, 这是 ... -
info q的极客时间大咖说等资料下载
2018-08-15 08:40 3462info q的极客时间大咖说等资料下载,还有不少思维导图 链 ... -
CXF 客户端超时时间设置(非Spring配置方式)
2018-07-03 22:38 2229import org.apache.cxf.endpoint. ... -
(转)synchronized关键字画像:正确打开方式
2018-06-14 09:25 488https://mp.weixin.qq.com/s/b3Sx ... -
CountDownLatch的例子
2018-06-13 14:10 681public class StatsDemo { ... -
两道面试题,带你解析Java类加载机制
2018-06-12 16:29 605https://mp.weixin.qq.com/s/YTa0 ... -
Spring中获取request的几种方法,及其线程安全性分析
2018-06-11 09:03 666https://mp.weixin.qq.com/s/KeFJ ... -
内部类小结
2018-06-06 10:25 432https://mp.weixin.qq.com/s/hErv ... -
JVM虚拟机小结1
2018-06-04 20:43 5341 jps -l //列出详细的类名和进程ID 2)jps ... -
windows下自带命令行工具查看CPU资源情况等
2018-06-04 12:53 3094微软提供了不少命令行 ... -
(收藏)深入分析Java的序列化与反序列化
2018-05-30 15:21 611https://mp.weixin.qq.com/s/T2Bn ... -
apache common包中的序列化工具
2018-05-30 09:10 1840什么是序列化 我们的 ... -
JAVA8 JVM的变化: 元空间(Metaspace)
2018-05-24 22:30 960本文将会分享至今为至我收集的关于永久代(Permanent G ... -
(转)服务器性能指标(一)——负载(Load)分析及问题排查
2018-05-21 21:03 1358原创: Hollis Hollis 负载 ... -
(转)对象复用
2018-05-20 15:27 854public class Student { priv ... -
mapreduce中入门中要注意的几点
2018-05-06 08:59 667在 mapreduce中,比如有如下的词: I love b ... -
HDFS的基本操作
2018-05-02 21:47 935-mkdir 在HDFS创建目录 ... -
一个不错的开源工具类,专门用来解析日志头部的,好用
2018-05-02 20:00 767一个不错的开源工具类,专门用来解析日志头部的,好用。 http ... -
介绍个不错的RESTFUL MOCK的工具wiremock
2018-04-27 21:02 1903介绍个不错的RESTFUL MOCK的工具wiremock,地 ...
相关推荐
4. **注解驱动的映射(Annotation-Based Mapping)**:JAXB允许使用Java注解来指定Java类与XML元素之间的对应关系,使得无需绑定文件就能完成映射。 ### JAXB使用步骤 1. **创建Java模型类**:定义要序列化的Java...
**HelloWorld示例** 是学习任何新技术的典型起点,JAXB也不例外。在这个例子中,我们通常会创建一个简单的Java类,比如`HelloWorld`,并用JAXB注解来描述如何映射到XML元素。例如: ```java import javax.xml.bind....
如果不希望手动添加注解,可以使用JAXB的绑定工具(如`xjc`)从XML Schema (XSD)文件生成对应的Java类。这一步骤将创建带有正确注解的Java类,以便JAXB理解XML结构。 (3) **实例化Java对象** 创建Java对象并填充...
在这个示例中,我们创建了一个`Unmarshaller`,然后使用`unmarshaller.unmarshal()`方法从XML文件中读取数据并创建一个`Person`对象。 ### JAXB注解 JAXB使用Java注解来指定Java类和XML元素之间的映射关系。例如,...
JAXB广泛应用于Web服务、数据交换、配置文件处理等场景,特别是在Java EE环境中,它被用于处理SOAP消息。此外,许多Java框架,如Spring,也支持JAXB进行数据绑定。 总结来说,JAXB是Java中一个强大的工具,用于XML...
JAXB 使用 javax.xml.bind.annotation 包下的 Java 标注,例如: * @XmlRootElement:标注 Java 类为 XML 根元素 * @XmlElement:标注 Java 属性为 XML 元素 * @XmlAttribute:标注 Java 属性为 XML 属性 六、JAXB...
2. **集成到JDK**:Java 6将JAXB纳入标准库,这意味着开发者不再需要额外下载和管理JAXB的实现,可以直接在Java SE环境中使用。 3. **性能提升**:JAXB 2.0在底层使用了Streaming API for XML(STAX,JSR 173),这...
在实际项目中,JAXB通常与Spring框架结合使用,实现RESTful服务中的XML数据交换。同时,JAXB也常被用在Web服务中,如JAX-WS,进行SOAP消息的序列化和反序列化。 总结来说,JAXB是Java开发者处理XML数据的强大工具,...
2. **JavaEE 5中的JAXB注解元素**:在`javax.xml.bind.annotation`包中提供了一系列注解,用于标注Java类,使其与XML元素进行映射。 #### 九、示例 以下是一个简单的示例,展示了如何使用JAXB操作XML文档。 1. **...
3. 在实体类中使用`@XmlRootElement`注解指定元素的命名空间,确保与包级别的命名空间定义一致。 正确理解和使用这些概念,将有助于在JAXB中有效地处理XML文档的命名空间,提高代码的可读性和可维护性。
1. **使用`@XmlElement(required = true)`**:此注解可以强制JAXB在解析XML时确保元素存在,但不保证元素的子元素(如列表中的项)非空。 2. **自定义异常处理**:创建自定义的`ValidationEventHandler`,在处理过程...
3. **注解**:在Jaxb2中,使用注解来指示哪些Java类、属性或字段应该被映射到XML元素或属性。例如: - `@XmlType`:标记Java类或枚举类型与XML模式类型对应。 - `@XmlAccessorType(XmlAccessType.FIELD)`:指定...
在提供的代码示例中,`JAXB2Tester`类展示了如何使用JAXB在Java对象和XML之间进行转换。首先,`JAXBContext`实例化用于创建和解析的对象上下文,接着,`Marshaller`和`Unmarshaller`分别用于对象到XML的序列化和XML...
在提供的`xml-demo`压缩包中,可能包含了使用这两种方法的示例代码,通过查看和运行这些示例,你可以更好地理解如何在实际项目中应用XStream和JAXB进行XML与Java Bean的互转。无论选择哪种方法,都需要注意处理Java...
这个示例展示了如何使用JAXB将XML文件解析为`Person` Bean。同样,也可以通过`Unmarshaller.unmarshal()`方法的其他重载版本来处理XML字符串或Reader等不同输入源。 总结起来,Java的JAXB框架提供了从XML到Java ...
在Java编程中,将Java对象转换为XML数据是一项常见的任务,特别是在处理数据交换或存储...在提供的`demo`文件中,很可能是包含了使用`JAXBContext`和`Marshaller`进行对象到XML转换的示例代码,你可以进一步研究学习。
当使用JAXB进行操作时,对于类的属性访问控制需要特别注意,例如,如果私有属性设置了public权限的getter/setter方法,则不应使用`@XmlElement`和`@XmlAttribute`注解,否则可能会因为同一个属性在Java类中被映射两...
要使用 Jaxb2RootElementHttpMessageConverter,需要在 Controller 中的方法上添加 @ResponseBody 注解,并在返回值类型上添加 @XmlRootElement 注解。 例如,下面是一个简单的示例: ```java import javax.xml....
`@XmlRootElement` 是由javax.xml.bind.annotation包提供的,它的主要用途是在JAXB中将Java类映射为XML文档的根元素。当我们有一个Java类并想将其序列化为XML时,如果没有`@XmlRootElement`,JAXB将无法确定哪个类...
这个Demo可以帮助我们理解JAXBContext如何工作,并演示了如何在实际项目中使用JAXB进行数据交换。 总结起来,JAXBContext是Java对象和XML之间转换的关键组件。通过创建JAXBContext实例,我们可以轻松地实现Java对象...