亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

程序設計:用JAXB生成一個XML文檔

2019-11-18 12:46:47
字體:
來源:轉載
供稿:網友

  一個xml 模式(Schema)用XML語法表達了一個XML文檔的結構。J2EE的開發者也許會需要一個符合XML模式的XML文檔。java XML綁定架構(JAXB)提供了一個綁定編譯器,xjc,來從一個XML模式中生成Java類。用JAXB的xjc生成的Java類代表了在XML模式中不同的元素和復雜類型(complexType)。(一個復雜類型通過指定屬性和元素內的元素來提供對一個元素的限定)。一個符合XML模式的XML文檔可以從這些Java類中構建出來。
  
  在這篇教程中,作者使用了JAXB用來從一個XML模式中生成Java類。這些Java類將會生成一個范例XML文檔。這篇文章由以下幾個部份組成:
  
  1.預設置
  2.概述
  3.從XMl模式中生成Java類
  4.從Java類中生成一個XML文檔
  
  預設置
  
  為了用JAXB從一個XML模式中生成Java類,JAXB API類庫和xjc工具應該存在CLASSPATH環境變量中。將Java Web服務開發包 (JWSDP) 1.5裝入一個安裝目錄中。將下列的.jar文件加入CLASSPATH環境變量中。
  
  ·<JWSDP>/jaxb/lib/jaxb-api.jar
  ·<JWSDP>/jaxb/lib/jaxb-impl.jar
  ·<JWSDP>/jaxb/lib/jaxb-libs.jar
  ·<JWSDP>/jaxb/lib/jaxb-xjc.jar
  ·<JWSDP>/jwsdp-shared/lib/namespace.jar
  ·<JWSDP>/jwsdp-shared/lib/jax-qname.jar
  ·<JWSDP>/jwsdp-shared/lib/relaxngDatatype.jar
  
  <JWSDP>是Java Web服務開發包1.5的安裝目錄。把<JWSDP>/jaxb/bin加入PATH環境變量中。<JWSDP>/jaxb/bin目錄中包含了xjc編譯器。把<JWSDP>/jwsdp-shared/bin目錄加入到PATH環境變量中。<JWSDP>/jwsdp-shared/bin目錄中包含了setenv的批處理文件,它設置了JAVA_HOME, ANT_HOME和JWSDP_HOME這幾個環境變量。
  
  概述
  
  JAXB生成對應著XML頂層元素和頂層復雜類型元素 的Java類和接口。在一個XML模式中,一個元素由<xs:element/>表示,一個復雜類型元素由<xs:complexType/>表示。這篇教程列舉了一個能夠表示一篇在科學雜志上發表的文章的示例模式,同時這個示例模式將會被JAXB綁定編譯器編譯。XML模式,catalog.xsd,如下:
  
  <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="catalog" type="catalogType"/>
  <xsd:complexType name="catalogType">
  <xsd:sequence>
  <xsd:element ref="journal"
  minOccurs="0" maxOccurs="unbounded"/>
  </xsd:sequence>
  <xsd:attribute name="section" type="xsd:string"/>
  <xsd:attribute name="publisher" type="xsd:string"/>
  </xsd:complexType>
  <xsd:element name="journal" type="journalType"/>
  <xsd:complexType name="journalType">
  <xsd:sequence>
  <xsd:element ref="article"
  minOccurs="0" maxOccurs="unbounded"/>
  </xsd:sequence>
  </xsd:complexType>
  <xsd:element name="article" type="articleType"/>
  <xsd:complexType name="articleType">
  <xsd:sequence>
  <xsd:element name="title" type="xsd:string"/>
  <xsd:element name="author" type="xsd:string"/>
  </xsd:sequence>
  <xsd:attribute name="level" type="xsd:string"/>
  <xsd:attribute name="date" type="xsd:string"/>
  </xsd:complexType></xsd:schema>
  
  一些XML模式的構造不被JAXB支持。假如這些不被支持的構造包含在了模式中,那么當你試圖用xjc來生成Java類時將會報錯。下列模式元素不被支持:xs:any, xs:anyAttribute, xs:notation, xs:redefine, xs:key, xs:keyref, 和 xs:unique. 下列模式的屬性不被支持: complexType.abstract, element.abstract, element.substitutionGroup, xsi:type, complexType.block, complexType.final, element.block, element.final, schema.blockDefault, 和 schema.finalDefault.
  
  生成Java類
  
  xjc工具基于此模式來綁定一個模式到Java類。針對本文的示例模式來進行綁定的命令是:
  
  >xjc catalog.xsd
  
  xjc命令行接口的一些選項列在下表:
  
  -nv    對于輸入的模式不執行嚴格的XML驗證
  
  -b <file>    指定外部的綁定文件
  
  -d <dir>    指定生成的文件的存放路徑
  
  -p <pkg>    指定目標包
  
  -classpath <arg>     指定classpath
  
  -use-runtime <pkg>    impl.runtime包不被生成
  
  -xmlschema    輸入的模式是一個W3C XML模式(默認)
  
  對于示例模式catalog.xsd來說,xjc將會生成45個類,顯示在如下xjc的輸出中:
  
  parsing a schema...
  compiling a schema...
  generated/impl/runtime/ErrorHandlerAdaptor.java
  generated/impl/runtime/MSVValidator.java
  generated/impl/runtime/NamespaceContext2.java
  generated/impl/runtime/UnmarshallableObject.java
  generated/impl/runtime/MarshallerImpl.java
  generated/impl/runtime/ValidationContext.java
  generated/impl/runtime/UnmarshallerImpl.java
  generated/impl/runtime/DefaultJAXBContextImpl.java
  generated/impl/runtime/ContentHandlerAdaptor.java
  generated/impl/runtime/GrammarInfoFacade.java
  generated/impl/runtime/UnmarshallingContext.java
  generated/impl/runtime/UnmarshallingEventHandlerAdaptor.java
  generated/impl/runtime/XMLSerializable.java
  generated/impl/runtime/Discarder.java
  generated/impl/runtime/PRefixCallback.java
  generated/impl/runtime/SAXMarshaller.java
  generated/impl/runtime/NamespaceContextImpl.java
  generated/impl/runtime/UnmarshallingEventHandler.java
  generated/impl/runtime/GrammarInfo.java
  generated/impl/runtime/InterningUnmarshallerHandler.java
  generated/impl/runtime/ValidatableObject.java
  generated/impl/runtime/GrammarInfoImpl.java
  generated/impl/runtime/ValidatingUnmarshaller.java
  generated/impl/runtime/ValidatorImpl.java
  generated/impl/runtime/SAXUnmarshallerHandlerImpl.java
  generated/impl/runtime/XMLSerializer.java
  generated/impl/runtime/Util.java
  generated/impl/runtime/SAXUnmarshallerHandler.java
  generated/impl/runtime/AbstractUnmarshallingEventHandlerImpl.java
  generated/impl/ArticleImpl.java
  generated/impl/ArticleTypeImpl.java
  generated/impl/CatalogImpl.java
  generated/impl/CatalogTypeImpl.java
  generated/impl/JAXBVersion.java
  generated/impl/JournalImpl.java
  generated/impl/JournalTypeImpl.java
  generated/Article.java
  generated/ArticleType.java
  generated/Catalog.java
  generated/CatalogType.java
  generated/Journal.java
  generated/JournalType.java
  generated/ObjectFactory.java
  generated/bgm.ser
  generated/jaxb.properties
  
  對于示例XML模式中的每個頂層xs:element和頂層xs:complexType,都對應地生成了一個Java接口和一個Java類。同時也創建了一個工廠類(ObjectFactory.java),包含了創建接口對象的方法。可以在在篇文章的示例代碼文件jaxb-java-resources.zip中找到ObjectFactory.java類。
  
  Catalog.java是對應頂層元素catalog生成的接口。從模式的元素中生成的接口擴展了javax.xml.bin.Elemnt類。
  
  Catalog.java:
  
  package generated;public interface Catalog
  extends javax.xml.bind.Element, generated.CatalogType{}
  
  CatalogType.java是對應頂層復雜元素catalogType生成的接口。CatalogType接口對應catalog元素的每個屬性指定了setter和getter方法,還有對應catalog元素中的journal元素 的一個getter方法。
  
  CatalogType.java:
  
  package generated;public interface CatalogType {
  java.lang.String getSection();
  void setSection(java.lang.String value);
  java.util.List getJournal();
  java.lang.String getPublisher();
  void setPublisher(java.lang.String value);}
  
  CatalogImpl.java 和CatalogTypeImpl.java是分別對應Catalog.java 和 CatalogType.java接口的實現類。
  
  從Java類中創建一個XML文檔
  
  這一節中,一個示例XMl文檔將會通進JAXB從Java類被創建。示例XML文檔,catalog.xml,如下顯示:
  
  <?xml version="1.0" encoding="UTF-8"?>
  <catalog xmlns="http://www.w3.org/2001/XMLSchema-Instance"
  section="Java Technology"
  publisher="IBM developerWorks">
  <journal>
  <article level="Intermediate" date="January-2004" >
  <title>Service Oriented Architecture Frameworks </titl

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩视频免费大全中文字幕| 色在人av网站天堂精品| 亚洲男人天堂手机在线| 久久久久久久激情视频| 午夜精品蜜臀一区二区三区免费| 日韩美女视频免费看| 欧美精品激情blacked18| 久久五月天色综合| 欧美激情视频给我| 亚洲深夜福利网站| 国产精品久久一区主播| 亚洲精品理论电影| 欧美在线视频在线播放完整版免费观看| 国产精品国产三级国产专播精品人| 久久精品亚洲热| 亚洲激情在线观看| 久久久亚洲成人| 欧美日韩国产限制| 97碰在线观看| 亚州精品天堂中文字幕| 91极品视频在线| 精品国产成人av| 欧美成人精品不卡视频在线观看| 欧美高清一级大片| 98精品国产自产在线观看| 久久久久国产精品免费| 亚洲一区二区三区sesese| 亚洲国模精品一区| 成人精品视频99在线观看免费| 国产欧美一区二区三区久久人妖| 久久人91精品久久久久久不卡| 亚洲欧洲美洲在线综合| 国产精品电影观看| 国产亚洲欧洲在线| 亚洲国产欧美日韩精品| 不卡伊人av在线播放| 91久久久久久久久| 久久久久久久久久久久久久久久久久av| 日韩av影院在线观看| 97精品视频在线| 亚洲电影免费观看高清完整版| 国产亚洲视频中文字幕视频| 日本精品免费一区二区三区| 久久手机精品视频| 日韩免费观看在线观看| 国产日本欧美一区二区三区在线| 久久夜色精品亚洲噜噜国产mv| 国产日韩欧美另类| 日韩av中文字幕在线免费观看| 亚洲电影免费观看高清完整版在线观看| 亚洲成人在线网| 欧美理论电影在线播放| 日韩网站免费观看高清| 国产精品入口尤物| 国产一区二区在线播放| 激情亚洲一区二区三区四区| 国产精品自产拍在线观看中文| 国产精品一区二区久久精品| 日韩国产中文字幕| 亚洲乱亚洲乱妇无码| 国产精品嫩草影院久久久| 2019中文字幕免费视频| 成人黄色在线观看| 欧美有码在线观看视频| 国产欧美精品一区二区三区-老狼| 国产精品亚洲美女av网站| 精品色蜜蜜精品视频在线观看| 人人澡人人澡人人看欧美| 国产日本欧美在线观看| 深夜福利一区二区| 亚洲国产婷婷香蕉久久久久久| 欧美黑人性生活视频| 亚洲曰本av电影| 色琪琪综合男人的天堂aⅴ视频| 久久精品久久久久| 亚洲成人xxx| 久久久久久久国产| 久久精品国产成人精品| 日韩成人小视频| 午夜精品视频在线| 亚洲色图狂野欧美| 国产一区二区三区三区在线观看| 久久精品亚洲一区| 中文字幕精品一区久久久久| 欧美午夜影院在线视频| 伊人成人开心激情综合网| 97免费在线视频| 国产一区二区在线免费| 久久综合伊人77777| 在线亚洲午夜片av大片| 亚洲最新av在线网站| www.午夜精品| 91沈先生在线观看| 精品久久久久久久久久久久久久| www.欧美三级电影.com| 国产福利精品av综合导导航| 国产主播精品在线| 亚洲福利在线观看| 久久最新资源网| 国产精品白丝jk喷水视频一区| 欧美午夜激情在线| 亚洲成人激情在线观看| 国产日韩亚洲欧美| 这里只有精品久久| 日韩欧美在线播放| 亚洲精品国产suv| 国产成人精品免高潮在线观看| 日韩有码视频在线| 欧美黄色片免费观看| 在线观看久久久久久| 亚洲毛片在线看| 欧美极品少妇xxxxⅹ喷水| 在线视频欧美日韩| 91久久国产综合久久91精品网站| 日韩在线资源网| 日韩精品福利网站| 97国产精品视频人人做人人爱| 2020欧美日韩在线视频| 欧美野外猛男的大粗鳮| 欧美日韩在线另类| 色综合久久久久久中文网| 91午夜理伦私人影院| 国产亚洲精品激情久久| 亚洲欧美国产精品久久久久久久| 日韩中文字幕免费| 91a在线视频| 国产精品久久久久久久7电影| 91香蕉嫩草影院入口| 中文字幕欧美日韩| 亚洲国产欧美一区二区丝袜黑人| 欧美一级电影免费在线观看| 国产精品自在线| www.午夜精品| 久久国产精品影视| 欧美一区二区三区……| 美女国内精品自产拍在线播放| 午夜精品一区二区三区在线| 久久综合亚洲社区| 亚洲电影免费观看高清完整版在线观看| 国产亚洲xxx| 992tv成人免费视频| 懂色av中文一区二区三区天美| 最近2019年好看中文字幕视频| 日韩精品在线观| 亚洲综合日韩中文字幕v在线| 欧美激情久久久久| 亚洲欧洲自拍偷拍| 国产精品九九九| 日韩成人av网| 热99精品里视频精品| 日韩久久免费电影| 亚洲国产一区二区三区四区| 欧美日韩亚洲成人| 欧美日韩一二三四五区| 欧美日在线观看| 精品国产依人香蕉在线精品| 国产精品日韩欧美大师| 欧美日韩在线视频一区二区| 欧美日韩一区二区精品| 久久精品影视伊人网| 欧美一区二区三区免费视| 超碰日本道色综合久久综合| 国自产精品手机在线观看视频| 疯狂欧美牲乱大交777|