- 浏览: 201464 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (75)
- JAVA (16)
- Eclipse (1)
- Spring (3)
- Oracle (12)
- gwt (3)
- html (6)
- 数据库 (8)
- Linux (9)
- javascript (3)
- xml (1)
- ubuntu (3)
- apache (1)
- tomcat (1)
- 集群 (2)
- 负载均衡 (2)
- nginx (5)
- android (2)
- phonegap (1)
- subversion (1)
- Memcached (1)
- Hadoop (1)
- vi (1)
- IOS Xcode (1)
- 数字签名 (1)
- shell (3)
- 浏览器 (1)
- firefox (1)
- mysql (5)
- couchbase (1)
- ssh (1)
- Jira (1)
- confluence (1)
- wiki (1)
- wget (1)
- GoAccess (1)
- git (1)
- sonar (1)
最新评论
-
793059909:
这种栈信息,可能是什么原因造成的:3XMTHREADINFO ...
怎样使用jstack诊断Java应用程序故障 -
kingcs:
Oracle 密码180天过期,修改为不限 -
di1984HIT:
不错啊。续约西了
使用JDK工具检查运行系统是否存在内存泄露 -
itzhangyang:
lz是不是可以说一下怎么解决的groovy并发的问题啊
怎样使用jstack诊断Java应用程序故障 -
crane.ding:
Web应用集群大体有两种方式,一种是将Session数 ...
Apache与Tomcat搭建集群
大家经常都会遇到xml格式文档的开发,对于解析XML和封装XML格式,我们自然而然的会想到JAXB,JAXB允许以XML格式存储和读取数据,而不需要程序的类结构实现特定的读取XML和保存XML的代码。
以下是需要输出的XML文本格式
首先我们需要使用XML Schema来描述XML格式,怎样自动生成xsd,我们可以通过trang.jar这个包来生成
生成的XSD文件格式如下
现在可以使用jdk自带的xjc命令来生成代码了,xjc的具体使用方面就不多说,大家可以自己看看它的帮助文档
下面我们就可以开始来写代码了
以下是需要输出的XML文本格式
<Books> <Book> <name>书名A</name> <author>作者A</author> <price>作者A</price> </Book> <Book> <name>书名B</name> <author>作者B</author> <price>作者B</price> </Book> </Books>
首先我们需要使用XML Schema来描述XML格式,怎样自动生成xsd,我们可以通过trang.jar这个包来生成
java -jar trang.jar a.xml a.xsd
生成的XSD文件格式如下
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="Books"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" ref="Book"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Book"> <xs:complexType> <xs:sequence> <xs:element ref="name"/> <xs:element ref="author"/> <xs:element ref="price"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="name" type="xs:NCName"/> <xs:element name="author" type="xs:NCName"/> <xs:element name="price" type="xs:NCName"/> </xs:schema>
现在可以使用jdk自带的xjc命令来生成代码了,xjc的具体使用方面就不多说,大家可以自己看看它的帮助文档
$ xjc a.xsd parsing a schema... compiling a schema... generated\Book.java generated\Books.java generated\ObjectFactory.java
package generated; import java.util.ArrayList; import java.util.List; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; /** * <p>Java class for anonymous complex type. * * <p>The following schema fragment specifies the expected content contained within this class. * * <pre> * <complexType> * <complexContent> * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> * <sequence> * <element ref="{}Book" maxOccurs="unbounded"/> * </sequence> * </restriction> * </complexContent> * </complexType> * </pre> * * */ @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { "book" }) @XmlRootElement(name = "Books") public class Books { @XmlElement(name = "Book", required = true) protected List<Book> book; /** * Gets the value of the book property. * * <p> * This accessor method returns a reference to the live list, * not a snapshot. Therefore any modification you make to the * returned list will be present inside the JAXB object. * This is why there is not a <CODE>set</CODE> method for the book property. * * <p> * For example, to add a new item, do as follows: * <pre> * getBook().add(newItem); * </pre> * * * <p> * Objects of the following type(s) are allowed in the list * {@link Book } * * */ public List<Book> getBook() { if (book == null) { book = new ArrayList<Book>(); } return this.book; } }
package generated; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlSchemaType; import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.adapters.CollapsedStringAdapter; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; /** * <p>Java class for anonymous complex type. * * <p>The following schema fragment specifies the expected content contained within this class. * * <pre> * <complexType> * <complexContent> * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> * <sequence> * <element ref="{}name"/> * <element ref="{}author"/> * <element ref="{}price"/> * </sequence> * </restriction> * </complexContent> * </complexType> * </pre> * * */ @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { "name", "author", "price" }) @XmlRootElement(name = "Book") public class Book { @XmlElement(required = true) @XmlJavaTypeAdapter(CollapsedStringAdapter.class) @XmlSchemaType(name = "NCName") protected String name; @XmlElement(required = true) @XmlJavaTypeAdapter(CollapsedStringAdapter.class) @XmlSchemaType(name = "NCName") protected String author; @XmlElement(required = true) @XmlJavaTypeAdapter(CollapsedStringAdapter.class) @XmlSchemaType(name = "NCName") protected String price; /** * Gets the value of the name property. * * @return * possible object is * {@link String } * */ public String getName() { return name; } /** * Sets the value of the name property. * * @param value * allowed object is * {@link String } * */ public void setName(String value) { this.name = value; } /** * Gets the value of the author property. * * @return * possible object is * {@link String } * */ public String getAuthor() { return author; } /** * Sets the value of the author property. * * @param value * allowed object is * {@link String } * */ public void setAuthor(String value) { this.author = value; } /** * Gets the value of the price property. * * @return * possible object is * {@link String } * */ public String getPrice() { return price; } /** * Sets the value of the price property. * * @param value * allowed object is * {@link String } * */ public void setPrice(String value) { this.price = value; } }
package generated; import javax.xml.bind.JAXBElement; import javax.xml.bind.annotation.XmlElementDecl; import javax.xml.bind.annotation.XmlRegistry; import javax.xml.bind.annotation.adapters.CollapsedStringAdapter; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import javax.xml.namespace.QName; /** * This object contains factory methods for each * Java content interface and Java element interface * generated in the generated package. * <p>An ObjectFactory allows you to programatically * construct new instances of the Java representation * for XML content. The Java representation of XML * content can consist of schema derived interfaces * and classes representing the binding of schema * type definitions, element declarations and model * groups. Factory methods for each of these are * provided in this class. * */ @XmlRegistry public class ObjectFactory { private final static QName _Author_QNAME = new QName("", "author"); private final static QName _Price_QNAME = new QName("", "price"); private final static QName _Name_QNAME = new QName("", "name"); /** * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: generated * */ public ObjectFactory() { } /** * Create an instance of {@link Book } * */ public Book createBook() { return new Book(); } /** * Create an instance of {@link Books } * */ public Books createBooks() { return new Books(); } /** * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} * */ @XmlElementDecl(namespace = "", name = "author") @XmlJavaTypeAdapter(CollapsedStringAdapter.class) public JAXBElement<String> createAuthor(String value) { return new JAXBElement<String>(_Author_QNAME, String.class, null, value); } /** * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} * */ @XmlElementDecl(namespace = "", name = "price") @XmlJavaTypeAdapter(CollapsedStringAdapter.class) public JAXBElement<String> createPrice(String value) { return new JAXBElement<String>(_Price_QNAME, String.class, null, value); } /** * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} * */ @XmlElementDecl(namespace = "", name = "name") @XmlJavaTypeAdapter(CollapsedStringAdapter.class) public JAXBElement<String> createName(String value) { return new JAXBElement<String>(_Name_QNAME, String.class, null, value); } }
下面我们就可以开始来写代码了
package generated; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.OutputStream; import java.util.List; import javax.xml.bind.JAXB; public class Test { public static void main(String[] args) throws FileNotFoundException { marshal(new FileOutputStream("out.xml")); unmarshal(new FileReader("out.xml")); } private static void unmarshal(FileReader reader) { try { Books books = JAXB.unmarshal(reader, Books.class); System.out.println(books.getBook().size()); System.out.println(books.getBook().get(0).getName()); System.out.println(books.getBook().get(0).getAuthor()); System.out.println(books.getBook().get(0).getPrice()); } finally { try { reader.close(); } catch (IOException e) { } } } private static void marshal(OutputStream output) { ObjectFactory factory = new ObjectFactory(); Books books = factory.createBooks(); List<Book> bookList = books.getBook(); Book book = factory.createBook(); book.setName("书名A"); book.setAuthor("作者A"); book.setPrice("价格A"); bookList.add(book); book = factory.createBook(); book.setName("书名B"); book.setAuthor("作者B"); book.setPrice("价格B"); bookList.add(book); book = factory.createBook(); book.setName("书名C"); book.setAuthor("作者C"); book.setPrice("价格C"); bookList.add(book); try { JAXB.marshal(books, output); } finally { try { output.close(); } catch (IOException e) { } } } }
- trang.jar (693.6 KB)
- 下载次数: 585
发表评论
-
Servlet 3.0 新特性详解
2015-06-07 09:30 1001Servlet 3.0 新特性概述 Servlet 3.0 ... -
Android手机应用apk的反编译
2013-12-12 14:15 1380要对Android手机应用apk进行反编译,我 ... -
PhoneGap android loadUrl远程URL
2012-05-07 22:26 3788phoneGap例子中默认是通过super.loadUrl(& ... -
怎样使用jstack诊断Java应用程序故障
2011-03-21 00:21 36304最近一段时间,我们的生产系统升级频繁出现故障, ... -
使用JDK工具检查运行系统是否存在内存泄露
2010-07-18 13:53 6779几个月前老大给我们培训了怎么样使用jmap和jh ... -
运营系统升级故障排查
2010-07-16 17:51 1170公司的运营管理系统是用SSH开发,经过考虑目前新开 ... -
一道简单的面试题
2010-04-04 12:46 3435前几天有位朋友跟我聊天说,最近他去面试遇到一个面试题,叫 ... -
SQL注入
2010-04-03 16:54 1220简单的SQL注入,往往会给应用程序造成严重的问题。最长 ... -
浮点数运算的陷阱
2010-04-03 15:17 1527浮点数的运算不能说是精确的,因为某些数字不能准确表示为 ... -
System.getProperties确定当前的系统属性的参数大全
2009-03-28 13:47 1550getProperties public static Pr ... -
Java代码实现设置系统时间
2009-03-26 22:41 11693在做终端项目中,今天的任务是将服务器返回的系统时间 ... -
使用Ant进行ssh和scp操作
2009-02-18 22:43 3611Ant真的很强大,通过Ant可以进行ssh和scp操作 ... -
文件上传的使用技巧
2008-11-16 17:07 1625相信大家都文件上传比不陌生,也有许多不同的处理方法。文 ... -
反射实体Bean 拷贝实体Bean数据
2008-08-20 22:05 2603public class MyMethod { p ... -
JAVA EXCEL API的使用
2008-08-20 14:14 1716使用Java Excel API生成Excel,以下是做了一个 ...
相关推荐
### 知识点一:JAXB (Java Architecture for XML Binding) 概述 - **定义**:JAXB 是 Java 平台...通过阅读官方文档,开发者可以深入理解 JAXB 的工作原理,并掌握其高级使用技巧,从而提高开发效率和应用程序的质量。
《JSP应用开发详解第二版》是一本深入探讨JSP技术的专业书籍,涵盖了JSP的高级应用和实际开发技巧。本书的第16章至17章主要关注JSP的实用性和扩展性,通过源码分析,我们可以深入了解JSP如何与其他技术如Java ...
XFire支持多种协议和数据格式,包括RESTful服务、JAXB数据绑定以及MTOM(消息传输优化机制)。其API简洁易用,使得开发Web服务更为高效。 ### 4. CXF框架 Apache CXF是目前最广泛使用的Java Web服务框架,结合了...
总之,Docx4j中文版开发手册是一份全面的资源,涵盖了从基础操作到高级特性的所有方面,帮助开发者熟练掌握利用Java处理OpenXML文档的各种技巧和方法。对于需要在Java项目中处理Word文档的开发者来说,这是一份不可...
在这个系列的第19至30章中,我们可以预见到一系列丰富的Java开发知识和技巧。下面将详细解析这些章节可能涵盖的关键知识点。 1. **异常处理** (Chapter 19): 异常处理是Java程序设计中的重要部分,用于处理运行时...
### Nachos系统概览 #### 一、Introduction to Nachos(Nachos简介) Nachos是一款教育软件,旨在帮助学生深入理解和实践操作系统的核心概念和技术。...这对于学习操作系统原理和开发技能都具有重要意义。
### 基于SoftEngine开发 WebService应用 #### 概述 本文旨在为SoftEngine的开发者提供一套...通过阅读本文,开发者能够更好地理解和掌握基于SoftEngine进行WebService开发的方法和技巧,从而有效提升开发效率和质量。
10. **最佳实践**:提供关于使用Axis1.4进行Web服务开发的建议和技巧,以提高开发效率和服务的可靠性。 总的来说,《Axis1.4 开发指南》是Java开发者学习和掌握Web服务开发的宝贵资源,通过深入阅读和实践,开发者...
1. `javax`:这个目录包含了一系列的Java扩展类库,如JavaBeans、Java Activation Framework (JAF) 和Java XML Binding (JAXB)等。这些类库提供了用于构建企业级应用和服务的功能。 2. `com`:这个目录通常包含了...
- **Java XML Binding API(JAXB)**:由于其重量级特性,JAXB在Android中并不适用,但开发者可以通过其他轻量级库,如Vogella推荐的SimpleXML库,实现类似的功能,将XML映射为Java对象。 2. **Android新闻阅读器...
3. **扩展性**:支持多种协议和标准,如JAXB、MTOM、WS-Security等,可满足复杂的业务需求。 **五、源码与工具** 在这个实例中,`MyEclipse下XFire开发Webservice实例.doc`文件应该包含了详细的步骤说明和源码示例...
4. **数据绑定**:CXF支持多种数据绑定技术,如JAXB(Java Architecture for XML Binding),用于自动将XML数据转换为Java对象。 5. **安全集成**:CXF集成了多种安全机制,如WS-Security、OAuth等,可以实现认证、...
4. **数据访问/集成**:Spring提供了对各种数据库访问技术的支持,包括JDBC、ORM(Object-Relational Mapping,如Hibernate、JPA)和OXM(Object-XML Mapping,如JAXB)。相关代码位于`org.springframework.jdbc`、`...
总之,《Axis2 WebService开发指南》是一本全面的指南,旨在帮助开发者掌握Axis2的核心特性和使用技巧,从而在Web服务开发中游刃有余。无论你是初学者还是经验丰富的开发者,都能从中受益。通过深入学习这本书,你将...
8. 工具与库支持:了解一些常用的XML处理工具,如XML编辑器(如oXygen XML Editor)、验证工具(如XMLStarlet)和库(如Java的JAXB,Python的lxml),以及如何在开发过程中有效利用它们。 9. XML安全性:讨论XML...
### JAVA案例开发集锦 ...通过以上介绍,《JAVA案例开发集锦》不仅涵盖了Java与Applet的基础知识、特效制作技巧,还深入探讨了Java与XML的集成应用,对于Java开发者而言是一本非常实用的参考书籍。
理解 JAXB(Java Architecture for XML Binding)和 JAX-RS(Java API for RESTful Web Services)可以帮助创建和消费这些服务。 8. **MVC(Model-View-Controller)架构**:在 J2EE 开发中,Struts、Spring MVC 和...
此外,手册还会探讨Oracle XML DB与其他XML技术的集成,例如JAXB(Java Architecture for XML Binding)和DOM(Document Object Model),以及如何在Java和.NET环境中使用Oracle XML DB的功能。 在性能优化方面,...