NCNC

WTGGT,TTGG

用户操作
[即时聊天] [发私信] [加为好友]
张忠良ID:sunjavaduke
93642次访问,排名986好友0人,关注者2
优于别人,并不高贵,真正的高贵是优于昨天的自己
这个世界上最伟大的事情并不是已经取得的成就,而是前进的方向
sunjavaduke的文章
原创 10 篇
翻译 43 篇
转载 1 篇
评论 0 篇
sunjavaduke的公告
Contact me
最近评论
文章分类
收藏
    相册
    vic
    Favorite
    ASF
    存档
    订阅我的博客
    XML聚合  FeedSky

    翻译 Java&XML-JAXB Part1 Introductions & Unmarshalling收藏

    新一篇: Java&XML-JAXB Part2 Marshalling | 旧一篇: Version Control Part1 SVN

    本文是对Sun网站的文章Java Architecture for XML Binding (JAXB)的翻译的第一部分,主要介绍了如何使用JAXB绑定schemaunmarshal XML文档,转载请声明!

     

    1.     什么是JAXB

    XMLJava技术就象是天生的搭档一样,它们共同协作来帮助开发互联网之间的数据交换和应用程序。这是由于XML实际上已经是不同系统之间交换数据的标准,而Java技术提供了平台的可移植性。这种搭档的关系尤其适用于Web ServiceWeb Service应用于不同平台不同语言开发的系统。所以Java+XML被认为是理想的开发Web Service的工具。

    但是如何将JavaXML结合在一起呢?更具体一点,如何通过java语言来存取一个XML文档呢?最典型的方式就是使用符合Simple API for XML(SAX)或者Document Object Model(DOM)规范的解析器来完成。Java API for XML Processing(JAXP) 提供了这些解析器。Java开发人员可以通过JAXP API来激活SAX或者DOM解析器,然后解析XML文档。解析的过程就是遍历文档,然后将它们逻辑的分成独立的片段。解析后的内容就可以通过应用程序访问了。SAX解析器在文档开始的时候就开始解析文档,这种情况下不在内存中保存DOM树。应用程序可以随时操作从解析器中获取的数据,但是不能做任何内存中数据的操作。例如无法更新内存中的数据然后返回更新数据后的XML文件。

    DOM解析器在内存中创建一棵表示文档中内容的树,这个树是由对象组成的。然后应用程序就可以访问树中的数据,并且可以操作数中的数据。

     

    现在,开发人员可以使用另外一种更简单的技术来访问XML文档,Java Architecture for XML Binding(JAXB),现在在Java Web Service Developer Pack中已经包含了该API的一种参考实现。

    JAXB的框架结构如下:

    XML Schema-->Binding Compiler(XJC tool)-->Schema-Derived Classes & Interfaces

                              Application

    XML Document<--marshal()--JAXB API-unmarshal()-->Conent Objects

    2.     SAX/DOM访问XML文档

    假设需要开发一个java应用程序来访问XML文档,并显示XML文档中的数据。样例文档如下:

    <?xml version="1.0"?>

    <Collection>

            <books>

                    <book itemId="999">

                            <name>Learning JAXB</name>

                            <ISBN>123445</ISBN>

                            <price>34 $</price>

                            <authors>

                                    <authorName>Jane Doe</authorName>

                            </authors>

                            <description>

                                    This books contains step by step instructions for

                                    beginners so that they can start using Java API for XML

                                    Binding.

                            </description>

                            <promotion>

                                    <Discount>

                                            10% on this book if purchased by March 2003

                                    </Discount>

                            </promotion>

                            <publicationDate>2003-01-01</publicationDate>

                            <bookCategory>other</bookCategory>

                    </book>

     

                    <book itemId="129">

                            <name>Java Webservices today and Beyond</name>

                            <ISBN>522965</ISBN>

                            <price>29 $</price>

                            <authors>

                                    <authorName>John Brown</authorName>

                                    <authorName>Peter T.</authorName>

                            </authors>

                            <description>

                                    This books contains information for users so that they

                                    can start using Java Web Services Developer Pack.

                            </description>

                            <promotion>

                                    <Discount>

                                            Buy one get Learning webservices Part 1 free

                                    </Discount>

                            </promotion>

                            <publicationDate>2002-11-01</publicationDate>

                            <bookCategory>magazine</bookCategory>

                    </book>

            </books>

    </Collection>

    上面的文档包含了关于books的数据例如book nameauthordescription等等。可以使用SAX或者DOM的方式来访问XML文档然后显示数据。例如使用SAX的方式,需要进行如下的操作:

    创建一个SAX解析器,然后使用解析器解析XML文档,SAX解析器从文档的开始进行解析。当遇到一些重要的内容是时(SAX的属于叫做事件),例如XML的开始标签,此时应用程序就可以访问它的数据。

    创建一个content handler,并定义方法来接受解析器的激活的事件,这些方法,叫做回调callback方法,对返回的数据进行适当的操作。

    下面是一个使用JAXP来创建和使用SAX解析器来解析一个XML文档。这个程序使用了MyContentHandler来显示SAX解析器传送的数据。

    /**

     * $Id: UsingJAXPTest1.java,v 1.1 2003/01/01 03:18:32 bhakti Exp $

     * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.

     *

     * This software is the confidential and proprietary information of Sun

     * Microsystems, Inc. ("Confidential Information").  You shall not

     * disclose such Confidential Information and shall use it only in

     * accordance with the terms of the license