- 浏览: 216273 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (166)
- Hibernate (3)
- Spring (18)
- Struts (1)
- Grails (0)
- Tools (17)
- j2se (17)
- webservice (3)
- js (5)
- XML (5)
- apache (6)
- JavaWeb (2)
- oracle (5)
- plan (12)
- linux (5)
- FreeMarker (3)
- maven (5)
- Activiti (4)
- log4jdbc (1)
- self4j (1)
- log4j (1)
- j2ee (1)
- shiro (2)
- MySQL (4)
- reflect (2)
- cmd (1)
- DB (6)
- report (1)
- jQuery (1)
- Cache (4)
- MQ (2)
- NIO (1)
- SCM (1)
- Framework (2)
- computer (2)
- MyBatis (1)
- cluster (1)
- solr (13)
- ZooKeeper (1)
- SVN (1)
- http (0)
- websocket (1)
- Tomcat (2)
- Spring Remote (2)
- Android (1)
- dubbo (1)
最新评论
-
whuvr:
import com.capitalbio.soft.core ...
Jedis+SpringDataRedis+Spring -
tianlanxing:
方法 不对 博主赶紧删了
SpringMVC中获取request与response对象 -
xiaoliu128:
汗。写了一大堆,没看出来是怎么数据库配置权限
shiro拦截url动态配置在数据库 -
javajiangyijin:
你好!按照你说的这样,/** 获取HttpServletRes ...
SpringMVC中获取request与response对象 -
虎踞龙盘忆江南:
你有个地方写的有点问题! appPat ...
Web项目的自定义属性配置文件读取- Windows/Linux
1:写好XML文件且根据XML文件写出XSD文件:
(或者使用Trang-[java -jar trang.jar source.xml dist.xsd])
XML:
<?xml version="1.0" encoding="UTF-8"?> <booking xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <company name="ACME Consulting"> <address>10 Coyote Avenue, Arizona, USA</address> <contact name="Duke" email="duke@acme.com" telephone="1234567890" /> </company> <student firstName="Jane" surname="Dow" /> <student firstName="John" surname="Doe" /> </booking>
XSD:
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="booking" type="courseBooking" /> <xsd:complexType name="courseBooking"> <xsd:sequence> <xsd:element ref="company" /> <xsd:element ref="student" minOccurs="1" maxOccurs="unbounded" /> </xsd:sequence> <xsd:attribute name="courseReference" type="xsd:string" use="required" /> <xsd:attribute name="courseDate" type="xsd:date" use="required" /> <xsd:attribute name="invoiceReference" type="xsd:string" use="required" /> <xsd:attribute name="totalPrice" type="xsd:decimal" use="required" /> </xsd:complexType> <xsd:element name="student" type="studentType" /> <xsd:complexType name="studentType"> <xsd:attribute name="firstName" type="xsd:string" use="required" /> <xsd:attribute name="surname" type="xsd:string" use="required" /> </xsd:complexType> <xsd:element name="company" type="companyType" /> <xsd:complexType name="companyType"> <xsd:sequence> <xsd:element name="address" /> <xsd:element ref="contact" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> <xsd:element name="contact" type="contactType" /> <xsd:complexType name="contactType"> <xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:attribute name="telephone" type="xsd:string" use="required" /> <xsd:attribute name="email" type="xsd:string" use="required" /> </xsd:complexType> </xsd:schema>
2:在命令行下输入命令(必须安装JDK1.5+):
意思为 利用Java 的XML绑定编译器(Compiler)去根据 test.xsd 生成Java与XML绑定的类放到包名为:com.rui.jaxb且文件夹为src 的目录下
xjc test.xsd -p com.rui.jaxb -d src
3:将 生成好的文件拷贝到eclipse中准备使用
4:XML验证器的的代码如下:
package com.rui.jaxb.validate; import javax.xml.bind.ValidationEvent; import javax.xml.bind.ValidationEventHandler; import javax.xml.bind.ValidationEventLocator; /** * 验证XML有效性的ValidationEventHandler */ public class BookingValidationEventHandler implements ValidationEventHandler { public boolean handleEvent(ValidationEvent event) { System.out.println("print message..."); // 判断验证严重级别: 1:致命错误:FATAL_ERROR 2: 错误: ERROR 3: 警告 WARNING if(event.getSeverity()==ValidationEvent.FATAL_ERROR || event.getSeverity() == ValidationEvent.ERROR) { // 获得 locator ValidationEventLocator locator = event.getLocator(); // 从验证事件中得到输出消息 System.out.println("Invalid booking document: " + locator.getURL()); System.out.println("Error: " + event.getMessage()); // 输出 行号和列 System.out.println("Error at colum: " + locator.getColumnNumber() + ", line: " + locator.getLineNumber()); } // 在这里我们只打印出 错误的消息,但是在真实的项目中,一些小的错误是允许的.所以我们一般返回true,这样程序就不会中断XML的处理过程,如果返回false,那么 // 解析的这个过程将会中断 - 这要看你是想这个解析器是个 错误的报告者,还是错误的中断者 return true; } }
5:解组的示例代码如下:
package com.rui.jaxb.test; import java.io.File; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBElement; import javax.xml.bind.Unmarshaller; import javax.xml.bind.ValidationEvent; import com.rui.jaxb.CourseBooking; import com.rui.jaxb.validate.BookingValidationEventHandler; import com.sun.corba.se.pept.transport.EventHandler; /** * 使用JAXB技术-解组过程 */ public class JaxbUnmarshalTest { public static void main(String[] args) throws Exception { // 以下为怎样使用JAXB技术从XML转换到JAVA类并获取值的过程 // 创建上下文对象 - 这是编组,解组和验证操作的起点. - 参数指定为包含被JAXB映射的类的包名 JAXBContext jaxbContext = JAXBContext.newInstance("com.rui.jaxb"); // 创建解组对象 Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); // 要想验证XML文件的有效性,必须在解码(unmarshal)之前附加一个ValidationEventHandler unmarshaller.setEventHandler(new BookingValidationEventHandler()); // 从要解组的介质中(可以是文件、流、URL、DOM对象、SAXParser等,在此为XML文件) JAXBElement<CourseBooking> bookingElement = (JAXBElement<CourseBooking>)unmarshaller.unmarshal(new File("booking.xml")); // 通过getValue() 方法得到解组对象 CourseBooking booking = bookingElement.getValue(); // 得到对象中的值 System.out.println(booking.getCompany().getContact().getTelephone()); System.out.println(booking.getStudent().get(0).getFirstName()); System.out.println(ValidationEvent.ERROR|ValidationEvent.FATAL_ERROR|ValidationEvent.WARNING); System.out.println(ValidationEvent.WARNING); System.out.println(ValidationEvent.ERROR); System.out.println(ValidationEvent.FATAL_ERROR); } }
6:编组的示例代码如下:
package com.rui.jaxb.test; import java.io.File; import java.math.BigDecimal; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBElement; import javax.xml.bind.Marshaller; import javax.xml.datatype.DatatypeFactory; import com.rui.jaxb.CompanyType; import com.rui.jaxb.ContactType; import com.rui.jaxb.CourseBooking; import com.rui.jaxb.ObjectFactory; import com.rui.jaxb.StudentType; /** * 使用JAXB技术编组过程 */ public class JaxbMarshalTest { public static void main(String[] args) throws Exception { // 以下为怎样使用JAXB技术从JAVA类转换到XML的过程 // 创建上下文对象 - 这是编组,解组和验证操作的起点. - 参数指定为包含被JAXB映射的类的包名 JAXBContext jaxbContext = JAXBContext.newInstance("com.rui.jaxb"); // 创建CourceBooking 对象 CourseBooking booking = new CourseBooking(); // 对象初始化过程 // 必须使用 DatatypeFactory 去处理一些固定的数据类型 DatatypeFactory datatypes = DatatypeFactory.newInstance(); booking.setCourseDate(datatypes.newXMLGregorianCalendarDate(2011, 11, 01, 0)); booking.setCourseReference("Agile Software Development"); booking.setTotalPrice(new BigDecimal(2000)); booking.setInvoiceReference("123456"); booking.getStudent().add(new StudentType()); booking.getStudent().get(0).setFirstName("zhang"); booking.getStudent().get(0).setSurname("san"); booking.setCompany(new CompanyType()); booking.getCompany().setName("rayoo_tech"); booking.getCompany().setAddress("北清路68号"); booking.getCompany().setContact(new ContactType()); booking.getCompany().getContact().setName("calm_flow"); booking.getCompany().getContact().setTelephone("1501000000"); booking.getCompany().getContact().setEmail("rayoo_tech@163.com"); // 初始化完毕后,使用JAXB上下文去创建Marshal对象和JAXBElement对象 Marshaller marshaller = jaxbContext.createMarshaller(); // 创建一个包装了你的Java类的JAXBElement对象,这个JAXBElement对象对应着你的文档的根元素 JAXBElement<CourseBooking> bookingElement = (new ObjectFactory().createBooking(booking)); // 设置格式化属性 Marshaller.JAXB_FORMATTED_OUTPUT marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // 设置文件编码属性 marshaller.setProperty(marshaller.JAXB_ENCODING, "UTF-8"); // 使用输出流编组 marshaller.marshal(bookingElement , new File("booking2.xml")); //System.out); } /* // 像JAXB1.0一样去使用 ObjectFactory ObjectFactory objectFactory = new ObjectFactory(); // 创建CourceBooking 对象 CourseBooking booking = objectFactory.createCourseBooking(); */ }
7: 类似解析:http://jibx.sourceforge.net/index.html
8:项目及文档见附件:
- jaxb.rar (44.7 KB)
- 下载次数: 2
发表评论
-
Socket编程之TCP/UDP
2015-03-13 20:46 6691: TCP编程(一对多): 服务器端: p ... -
java.util.ResourceBundle
2014-12-29 14:17 5431:用法: ResourceBundle bundl ... -
JDK Proxy使用
2014-12-17 14:51 5701: 使用JDK Proxy 进行动态拦截某个类的方法执行 ... -
递归拷贝/删除文件/文件夹:
2014-07-23 10:54 627递归拷贝/删除文件/文件夹: package cn.sy ... -
JDK无法通过环境变量切换问题
2014-07-22 11:19 492当指定JDK环境变量但是还是无法根据环境变量找到指定的 ... -
MIME type 映射
2013-04-19 12:39 702323=text/h323 acx=applicatio ... -
Java获取当前运行方法的名称
2013-04-08 17:02 665方法一:new Exception().getStackTr ... -
java按长度生成随机数字和字母组合
2012-09-20 11:46 1148import java.util.Random; pub ... -
基于反射_判断子类泛型类型
2012-05-25 21:12 1200父类代码: package cn.generic ... -
ProxyPattern_代理模式
2012-01-01 20:15 8211:此例演示 使用JDK代理模式,使用此模式须实现接口,对没有 ... -
Java_设置HTTP代理
2011-12-12 16:54 831/**如果有代理设置所使用 * @param hos ... -
JAX-WS_Java API for XML Web Services
2011-11-04 16:15 11621:写出WebService 实现类: package c ... -
Java 字符串格式化
2011-09-23 12:21 734JDK: java.util.Formatter.Conver ... -
java 命令
2011-08-19 16:26 755主要介绍java和javac命令的使用,分带package和不 ... -
Date and Time Format Patterns
2011-08-02 18:47 801Date and Time Format Patterns ... -
通过url下载文件到本地
2011-08-01 09:39 23851:通过URL下载文件: public class Dow ...
相关推荐
THE Java™Architecture for XML Binding (JAXB) provides a fast and convenient way to bind between XML schemas and Java representations, making it easy for Java developers to incorporate XML data and ...
Android支持JAXB(Java Architecture for XML Binding) JAXB(Java Architecture for XML Binding)是Java领域中的一项标准技术,能够根据XML Schema生成Java类,并将XML实例文档反向生成Java对象树。JAXB提供了将...
JAXB,即Java Architecture for XML Binding,是Java EE的一部分,提供了一种将XML数据结构化为Java对象的机制,以及反向的绑定过程。本文将深入探讨JAXB的实现原理、使用方法和最佳实践。 JAXB为Java开发者提供了一...
**JAXB(Java Architecture for XML Binding)** 是Java平台上的一个标准,用于处理XML文档,它提供了一种方便的方式来将XML数据映射到Java对象,同时也可以将Java对象转换为XML文档。JAXB使得XML的解析、生成以及...
Java Architecture for XML Binding (JAXB) 是Java平台中用于处理XML和Java对象之间转换的一个标准API。它使得在Java应用程序中使用XML数据变得更加方便,无需手动编写大量的转换代码。本教程将详细介绍JAXB如何实现...
对于XML的读写,Java提供了许多库,如JAXB(Java Architecture for XML Binding)用于对象与XML之间的映射,方便数据交换;DOM4J提供了一套完整的DOM、SAX和JDOM接口,便于XML处理;另外,Java标准库中的javax.xml....
在Java中,有多种处理XML的API,如DOM(Document Object Model)、SAX(Simple API for XML)和JAXB(Java Architecture for XML Binding)。DOM一次性加载整个XML文档到内存中,适合小型文件;SAX是事件驱动的,...
Java中实现XML到Bean的转换,主要依赖于`JAXB (Java Architecture for XML Binding)` API。JAXB允许我们将XML文档映射到Java对象,反之亦然。在描述的代码中,可能包含了一个自定义的类加载器,这是为了动态加载Java...
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例...
除了Java自带的解析库,还有第三方库如JAXB(Java Architecture for XML Binding)用于对象与XML之间的映射,以及DOM4J、XOM等提供更高级别的接口,简化XML处理。 5. 实战应用: 在实际项目中,根据需求选择合适的...
JAXB (Java Architecture for XML Binding) 是Java平台上的一个标准,用于将XML文档与Java对象之间进行绑定,实现XML数据的解析和序列化。在Java开发中,JAXB提供了一种方便的方式,允许开发者通过XML Schema (XSD) ...
5. **JAXB (Java Architecture for XML Binding)**: 用于对象和XML之间的自动转换,是JAX-WS的重要组成部分。通过JAXB,Java对象可以直接序列化为XML,反之亦然。 **JAX-WS的开发流程** 1. **定义SEI**: 开发者...
2. **JAXB(Java Architecture for XML Binding)** JAXB允许Java对象与XML之间进行自动转换,简化了数据绑定过程。通过注解或者XML Schema,可以将Java类映射到XML元素,反之亦然。 3. **JDOM(Java Document ...
3. **JAXB(Java Architecture for XML Binding)**:虽然不在"xml-apis.jar"中,但通常与Java XML处理相关。JAXB允许将XML文档与Java对象之间进行自动映射,简化了XML数据的序列化和反序列化。 4. **JAXP(Java ...
3. **JAXB(Java Architecture for XML Binding)**:JAXB是Java标准,用于在Java对象和XML文档之间进行自动转换。通过注解或XML Schema,我们可以将Java类映射到XML元素,实现序列化和反序列化。 4. **StAX...
在Java中,JAXB(Java Architecture for XML Binding)是用于对象到XML以及XML到对象之间转换的标准API,它可以自动将Java对象序列化为XML,并反序列化回Java对象。而JDBC(Java Database Connectivity)则是Java...
在Java中处理XML的库还包括JAXB(Java Architecture for XML Binding),它可以将XML文档自动映射为Java对象,反之亦然。这在需要频繁进行XML与Java对象转换的场景下非常有用。`javax.xml.bind.JAXBContext`和`javax...
3. **JAXB(Java Architecture for XML Binding)**:JAXB提供了一种将Java对象和XML进行自动转换的方式,使得数据交换变得简单。通过注解或者绑定文件,可以定义Java类和XML元素之间的映射关系。`javax.xml.bind....
此外,JAXB(Java Architecture for XML Binding)可用于对象与XML之间的自动序列化和反序列化,简化数据交换。 最后,我们提到的`xml.txt`和`www.pudn.com.txt`可能是示例代码或XML数据文件。对于学习XML编程,...