乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      JDK6的新特性之二:使用JAXB2來實(shí)現(xiàn)對(duì)象與XML之間的映射...

       ShangShujie 2007-05-06
      JDK6的新特性之二:使用JAXB2來實(shí)現(xiàn)對(duì)象與XML之間的映射 
      JAXB 是Java Architecture for XML Binding的縮寫,可以將一個(gè)Java對(duì)象轉(zhuǎn)變成為XML格式,反之亦然。我們把對(duì)象與關(guān)系 數(shù)據(jù)庫之間的映射稱為ORM, 其實(shí)也可以把對(duì)象與XML之間的映射稱為OXM(Object XML Mapping). 原來JAXB是 Java EE的一部分,在JDK6中,SUN將其放到了Java SE中,這也是SUN的一貫做法。JDK6中自帶的這個(gè)JAXB版本是2.0, 比起 1.0(JSR 31)來,JAXB2(JSR 222)用JDK5的新特性Annotation來標(biāo)識(shí)要作綁定的類和屬性等,這就極大簡化了開發(fā)的工作 量。實(shí)際上,在Java EE 5.0中,EJB和Web Services也通過Annotation來簡化開發(fā)工作。另外,JAXB2在底層是用 StAX(JSR 173)來處理XML文檔。 閑話不多說了,下面用代碼演示在JDK6中如何來用JAXB2

      public class JAXB2Tester {
          public static void main(String[] args) throws JAXBException,IOException {
              JAXBContext context = JAXBContext.newInstance(Person.class);
              //下面代碼演示將對(duì)象轉(zhuǎn)變?yōu)閤ml
              Marshaller m = context.createMarshaller();
              Address address = new Address("China","Beijing","Beijing","ShangDi West","100080");
              Person p = new Person(Calendar.getInstance(),"JAXB2",address,Gender.MALE,"SW");
              FileWriter fw = new FileWriter("person.xml");
              m.marshal(p,fw);

              //下面代碼演示將上面生成的xml轉(zhuǎn)換為對(duì)象
              FileReader fr = new FileReader("person.xml");
              Unmarshaller um = context.createUnmarshaller();
              Person p2 = (Person)um.unmarshal(fr);
              System.out.println("Country:"+p2.getAddress().getCountry());
          }
      }

      @XmlRootElement//表示person是一個(gè)根元素
      class Person {    
          @XmlElement
          Calendar birthDay; //birthday將作為person的子元素

          @XmlAttribute
          String name; //name將作為person的的一個(gè)屬性

          public Address getAddress() {
              return address;
          }

          @XmlElement
          Address address; //address將作為person的子元素

          @XmlElement
          Gender gender; //gender將作為person的子元素

          @XmlElement
          String job; //job將作為person的子元素

          public Person(){
          }
          
          public Person(Calendar birthDay, String name, Address address, Gender gender, String job) {
              this.birthDay = birthDay;
              this.name = name;
              this.address = address;
              this.gender = gender;
              this.job = job;
          }
      }

      enum Gender{
          MALE(true),
          FEMALE (false);
          private boolean value;
          Gender(boolean _value){
              value = _value;
          }
      }

      class Address {
          @XmlAttribute
          String country;
          @XmlElement
          String state;
          @XmlElement
          String city;
          @XmlElement
          String street;
          String zipcode; //由于沒有添加@XmlElement,所以該元素不會(huì)出現(xiàn)在輸出的xml中

          public Address() {
          }

          public Address(String country, String state, String city, String street, String zipcode) {
              this.country = country;
              this.state = state;
              this.city = city;
              this.street = street;
              this.zipcode = zipcode;
          }


          public String getCountry() {
              return country;
          }
      }

      運(yùn)行該程序,我們會(huì)得到一個(gè)person.xml的文件,如下:

      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 

      <person name="JAXB2">
            <birthDay>2006-12-28T08:49:27.203+00:00</birthDay> 
             <address country="China">
                  <state>Beijing</state> 
                  <city>Beijing</city> 
                  <street>ShangDi West</street> 
        </address>
             <gender>MALE</gender> 
             <job>SW</job> 
      </person>
      控制臺(tái)會(huì)輸出

      Country:China

      最后,想說一點(diǎn),除了JAXB之外,我們還可以通過XMLBeans和Castor等來實(shí)現(xiàn)同樣的功能。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多