zoukankan      html  css  js  c++  java
  • JAXB

    We'll stick with the tradition and use a sort of "Hello World" XML document to illustrate the typical scenario for creating the Java classes and their use to marshal a document. We'll not discuss any details in this subsection; it's just here to give you the overall picture.

    The XML Schema on hello.xsd defines the structure of our document, which is to contain a series of salutations, each of which contains a greeting (such as "Hello world") and an attribute for registering the language of the salutation.

    <?xml version="1.0" encoding="UTF-8"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="2.0">
        <xsd:element name="Greetings" type="GreetingListType"/>
        <xsd:complexType name="GreetingListType">
            <xsd:sequence>
                <xsd:element name="Greeting" type="GreetingType" maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
        <xsd:complexType name="GreetingType">
            <xsd:sequence>
                <xsd:element name="Text" type="xsd:string"/>
            </xsd:sequence>
            <xsd:attribute name="language" type="xsd:language"/>
        </xsd:complexType>
    </xsd:schema>

    Now we can call the JAXB schema compiler, defining the package name hello for the generated classes.

    xjc -p hello hello.xsd

    This generates several classes in the subdirectory hello. The class Hello shows how to use them.

    import java.util.*;
    import javax.xml.bind.*;
    import hello.*;
    
    public class Hello {
    
        private ObjectFactory of;
        private GreetingListType grList;
    
        public Hello(){
            of = new ObjectFactory();
            grList = of.createGreetingListType();
        }
    
        public void make( String t, String l ){
            GreetingType g = of.createGreetingType();
            g.setText( t );
            g.setLanguage( l );
            grList.getGreeting().add( g );
        }
    
        public void marshal() {
            try {
                JAXBElement<GreetingListType> gl =
                    of.createGreetings( grList );
                JAXBContext jc = JAXBContext.newInstance( "hello" );
                Marshaller m = jc.createMarshaller();
                m.marshal( gl, System.out );
            } catch( JAXBException jbe ){
                // ...
            }
        }
    }

    The constructor uses a method from the object factory to create an object of the document's top level XML element type, i.e., GreetingListType. The make method adds another salutation with its text element and the language attribute. Finally, with a call to marshal, the list is wrapped in its XML element, and the resulting XML document is written to the standard output stream. Here's a sequence of these calls:

    Hello h = new Hello();
    h.make( "Bonjour, madame", "fr" ); 
    h.make( "Hey, you", "en" ); 
    h.marshal();

    The output is shown below, formatted, for better readability.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Greetings>
        <Greeting language="fr">
            <Text>Bonjour, madame</Text>
        </Greeting>
        <Greeting language="en">
            <Text>Hey, you</Text>
        </Greeting>
    </Greetings>
  • 相关阅读:
    Android中ProgressDialog的应用
    Content的startActivity方法需添加FLAG_ACTIVITY_NEW_TASK flag
    android onKeydown
    8 个最优秀的 Android Studio 插件
    Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
    Android提供的LruCache类简介
    Android设计中的.9.png与Android Studio中的设置
    js实现双击后网页自己主动跑-------Day55
    Oracle经常使用函数
    《R实战》读书笔记三
  • 原文地址:https://www.cnblogs.com/huey/p/5504182.html
Copyright © 2011-2022 走看看