重用生成的JAXB類

在本文中,我將演示如何利用– XJC擴展來重用以前從XML模式生成的類。 當其他XML架構導入XML架構并且您不想每次都生成相同的類時,這很有用。

導入的架構(Product.xsd)

以下XML模式代表有關產品的基本信息。 產品是此示例域中的常見概念,因此我決定定義一種可以被其他模式利用的表示形式,而不是讓每個模式都定義自己的產品信息表示形式。

<?xml version="1.0" encoding="UTF-8"?>
<schemaxmlns="http://www.w3.org/2001/XMLSchema "targetNamespace=" http://www.example.org/Product "xmlns:tns=" http://www.example.org/Product "elementFormDefault="qualified"><element name="product"><complexType><sequence><element name="id" type="string"/><element name="name" type="string"/></sequence></complexType></element>
</schema>

由于多個XML模式導入Product.xsd,因此我們可以利用情節文件,以便與Product.xsd對應的類僅生成一次。 以下XJC調用演示了如何生成稱為product的情節文件。 情節以及生成的類:

xjc -d out -episode product.episode Product.xsd

導入架構(ProductPurchaseRequest.xsd)

以下是導入Product.xsd的XML模式的示例:

<?xml version="1.0" encoding="UTF-8"?>
<schemaxmlns="http://www.w3.org/2001/XMLSchema "targetNamespace=" http://www.example.org/ProductPurchaseRequest "xmlns:tns=" http://www.example.org/ProductPurchaseRequest "xmlns:prod=" http://www.example.org/Product "elementFormDefault="qualified"><import namespace=" http://www.example.org/Product " schemaLocation="Product.xsd"/><element name="purchase-request"><complexType><sequence><element ref="prod:product" maxOccurs="unbounded"/></sequence></complexType></element>
</schema>

從XML模式生成類時,將引用從Product.xsd生成Java類時創建的情節文件。 如果我們未指定情節文件,則將為ProductPurchaseRequest.xsdProduct.xsd生成類:

另一個導入模式(ProductQuoteRequest.xsd)

以下是導入Product.xsd的XML模式的另一個示例:

<?xml version="1.0" encoding="UTF-8"?>
<schemaxmlns="http://www.w3.org/2001/XMLSchema "targetNamespace=" http://www.example.org/ProductQuoteRequest "xmlns:tns=" http://www.example.org/ProductQuoteRequest "xmlns:prod=" http://www.example.org/Product "elementFormDefault="qualified"><import namespace=" http://www.example.org/Product " schemaLocation="Product.xsd"/><element name="quote"><complexType><sequence><element ref="prod:product"/></sequence></complexType></element>
</schema>

同樣,當我們從此XML模式生成類時,我們將引用從Product.xsd生成Java類時創建的情節文件。

xjc -d out ProductQuoteRequest.xsd -extension -b product.episode

它是如何工作的? (product.episode)

對于你們中的那些人來說,這很奇怪。 XJC生成的情節文件實際上只是一個用于自定義類生成的標準JAXB綁定文件。 生成的綁定/情節文件包含一些條目,這些條目告訴XJC此類型的類已經存在。 您可以手工編寫此文件,但是XJC的-episode標志可以幫您完成。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bindings version="2.1" xmlns="http://java.sun.com/xml/ns/jaxb ">
<!--This file was generated by the JavaTM Architecture for XML Binding
(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 See 
<a href=" http://java.sun.com/xml/jaxb "> http://java.sun.com/xml/jaxb </a> 
Any modifications to this file will be lost upon recompilation of the 
source schema. 
Generated on: 2011.11.02 at 03:40:10 PM EDT -->
<bindings scd="x-schema::tns"
xmlns:tns=" http://www.example.org/Product ">
<schemaBindings map="false"/>
<bindings scd="tns:product">
<class ref="org.example.product.Product"/>
</bindings>
</bindings>
</bindings>

參考: Java XML和JSON綁定博客中的JCG合作伙伴 Blaise Doughan 重用了生成的JAXB類 。

相關文章 :

  • 使用JAXB從XSD生成XML
  • 將對象映射到多個XML模式–天氣示例

翻譯自: https://www.javacodegeeks.com/2011/12/reusing-generated-jaxb-classes.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373961.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373961.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373961.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL的Master/Slave群集安裝和配置

本文介紹MySQL的Master/Slave群集安裝和配置&#xff0c;版本號安裝最新的穩定版GA 5.6.19。 為了支持有限HA。我們用Master/Slave讀寫簡單孤立的集群。有限HA這是當Master不可用&#xff0c;數據不會丟失。但在Master寫的&#xff0c;必須手工處理故障。假設要支持更高的可用性…

動態申請二維數組

以下是動態申請a[m][n]的源代碼 代碼一&#xff1a; /* 編譯器&#xff1a;DEV C */ #include<stdio.h> #include<stdlib.h> int main() {int **a;int i,j,m,n;scanf("%d%d",&m,&n); a (int **)malloc(sizeof(int *)*m);for (i0;i<m; i){a[i…

判斷線段和直線相交 POJ 3304

1 // 判斷線段和直線相交 POJ 33042 // 思路&#xff1a;3 // 如果存在一條直線和所有線段相交&#xff0c;那么平移該直線一定可以經過線段上任意兩個點&#xff0c;并且和所有線段相交。4 5 #include <cstdio>6 #include <cstring>7 #include <iostream>8 …

JavaOne正在重建動力

在JavaOne上度過了一個非常忙碌的一周&#xff0c;今年的活動有很多讓人喜歡的地方。 有很多驚喜的公告&#xff0c;很多很好的內容/會議&#xff0c;并且在場地和組織上都有很多改進。 對于一直耐心等待我發表我所有演講的人們&#xff0c;我為您的延遲表示歉意……給4個演講一…

tensorflow http調用_《TensorFlow 內核剖析》筆記——系統架構

3 系統架構系統整體組成&#xff1a;Tensorflow的系統結構以C API為界&#xff0c;將整個系統分為前端和后端兩個子系統&#xff1a;前端構造計算圖后端執行計算圖&#xff0c;可再細分為&#xff1a;運行時&#xff1a;提供本地模式和分布式模式計算層&#xff1a;由kernal函數…

SGU 187.Twist and whirl - want to cheat( splay )

維護一個支持翻轉次數M的長度N的序列..最后輸出序列.1<N<130000, 1<M<2000splay裸題...-------------------------------------------------------------#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int ma…

練習一萬小時成天才

隨著暢銷書《異類》的流行&#xff0c;“練習一萬小時成天才”這個口號現在是盡人皆知。也許仍然有不少人相信那些不世出的天才必有天生的神秘能力&#xff0c;但科學家通過大量的調查研究已經達成共識&#xff0c;那就是所有頂級高手都是練出來的。不但如此&#xff0c;最近幾…

(轉)數據流圖

轉自:http://jingyan.baidu.com/article/4f34706eefdb04e387b56deb.html 數據流圖4種圖元 數據流圖的實例 轉載于:https://www.cnblogs.com/wrencai/p/5852389.html

從CLI監視OpenJDK

目前&#xff0c;我大部分時間在Java虛擬機 &#xff08;JVM&#xff09;內或周圍進行大量工作&#xff0c;大部分時間是在Linux上。 當事情變得不對勁并且我試圖確定原因時&#xff0c;我接觸了Java性能分析工具。 這些工具有兩種形式&#xff0c;一種是精美的GUI&#xff08;…

python數據庫優化_python | Mysql性能優化一

對mysql優化是一個綜合性的技術&#xff0c;主要包括表的設計合理化(符合3NF)添加適當索引(index) [四種: 普通索引、主鍵索引、唯一索引unique、全文索引]分表技術(水平分割、垂直分割)讀寫[寫: update/delete/add]分離存儲過程 [模塊化編程&#xff0c;可以提高速度]對mysql配…

MySQL中文亂碼問題

項目中用到MySQL數據庫時中文出現亂碼問題&#xff08;中文字符都變成了&#xff1f;&#xff09;解決&#xff1a; 1、統一項目與數據庫的編碼&#xff0c;項目中用的是UTF-8因此我的把數據庫的編碼統一成UTF-8 修改方式&#xff1a;修改 MySQL根目錄中的 my.ini 文件替換d…

json與字符串互轉

1 字符串轉JSON var objeval((str"))var objJSON.parse(str)var objstr.parseJSON()2 JSON轉字符串 var strobj.toJSONString()var strJSON.stringify(obj)轉載于:https://www.cnblogs.com/liu-xia/p/5050878.html

使用RequestFactory API進行Spring GWT集成

從GWT 2.4開始&#xff0c;將RequestFactory API與后端的Spring服務集成很容易&#xff0c;您需要做的就是在服務器上創建一個自定義ServiceLocator&#xff0c;GWT將使用它來正確定位被調用的服務&#xff1a; public class SpringServiceLocator implements ServiceLocator {…

C++實例講解Binder通信

binder是android里面的通信機制&#xff0c;這就不說它如何如何好了&#xff0c;Goog已經說過了&#xff0c;這里不多說。binder是一個面向對象的編程方法&#xff0c;大量使用虛函數類。最近研究binder看到一網友寫的&#xff0c;就借鑒一下。這個例子很好的解釋里binder通信關…

2014編程之美初賽第一場

題目1 : 焦距 時間限制:2000ms單點時限:1000ms內存限制:256MB描述 一般來說&#xff0c;我們采用針孔相機模型&#xff0c;也就是認為它用到的是小孔成像原理。 在相機坐標系下&#xff0c;一般來說&#xff0c;我們用到的單位長度&#xff0c;不是“米”這樣的國際單位&#x…

高中python公開課怎么上好_如何上好高中英語公開課

談如何上好高中英語公開課對青年教師來說&#xff0c;開一節公開課&#xff0c;如同完成一次蛻變&#xff0c;累掉一層皮&#xff0c;有著刻骨銘心的陣痛&#xff0c;但換來的是突飛猛進的專業成長。可以說&#xff0c;公開課是青年教師培訓的有效途徑&#xff0c;是名師培養的…

Codeforces Round #261 (Div. 2) - E (459E)

題目連接&#xff1a;http://codeforces.com/contest/459/problem/E 題目大意&#xff1a;給定一張有向圖&#xff0c;無自環無重邊&#xff0c;每條邊有一個邊權&#xff0c;求最長嚴格上升路徑長度。(1≤n&#xff0c;m≤3 *10^5) 初見此題覺得以邊為點&#xff0c;以點為邊&…

回收對象以提高性能

總覽 在上一篇文章中&#xff0c;我說過對象反序列化更快的原因是由于使用了回收對象。 由于兩個原因&#xff0c;這可能令人驚訝&#xff1a;1&#xff09;相信如今創建對象是如此之快&#xff0c;無關緊要或與回收自己一樣快&#xff0c;2&#xff09;默認情況下&#xff0c;…

jquery GET POST

<!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <head> <!--引入百度庫--> <script src"http://libs.baidu.com/jquery/1.10.2/jquery.min.js"> </script> <title></title> <scrip…

C++高精度運算類bign (重載操作符)

大數據操作&#xff0c;有如下問題&#xff1a; 計算&#xff1a;45678913561232654213212314875231656511323132 456789135612326542132123*14875231656511323132 比較&#xff1a;7531479535511335666686565>753147953551451213356666865 ? long long類型存儲不了&…