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

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

使用XMLBeans 處理XML

2019-11-18 11:22:15
字體:
來源:轉載
供稿:網友

一.xmlBeans

基于XML開發的技術很多,常見的如Dom4j(JBoss用),Castor,Common-Degister(Struts用),XMLBeans.關于這些的比較網上很多.這里談談XMLBeans的用法.

XMLBeans的官方地址(http://xmlbeans.apache.org/).上面有它的具體介紹和用法.

 

二 適用的場合

從使用的經驗來看,XMLBeans比較適合處理具有復雜Schema定義的xml,如SAML,Liberty等.而簡單的XML結構用Dom4j或者Castor XML Mapping 都很輕易處理.

因此假如你要處理一個很復雜的Schema定義,選擇XMLbeans就比較好.

 

三. XMLBeans 的使用過程

1.要熟悉XML Schema. 這本書值得推薦: XML 模式權威教程 http://www.china-pub.com/computers/common/info.asp?id=8908)

 

2.從Schema 自動映射到 java 對象.

這個步驟可以用XMLbeans的生成工具.

相關的Maven腳本如下:

         <!--==================================================================-->

<!-- XMLBeans                                                         -->

<!--==================================================================-->

<goal descr<echo>+---------------------------------------------------+</echo>

<echo> XMLBeans genreating.......                       </echo>

<echo>+---------------------------------------------------+</echo>

<taskdef name="xmlbean"

classname="org.apache.xmlbeans.impl.tool.XMLBean"

classpathref="maven.dependency.classpath"/>

<xmlbean srcgendir="${project.xmlbeans.srcgendir}"

classgendir="${project.xmlbeans.classgendir}"

destfile="${project.xmlbeans.destfile}" debug="true"

classpathref="maven.dependency.classpath" >

<fileset dir="${project.xmlbeans.schemas}" />

</xmlbean>

<!--

<path id="{maoxiang.xmlbeans.srcgendir" location="${maoxiang.xmlbeans.srcgendir}"/>

<maven:addPath id="maven.compile.src.set" refid="maoxiang.xmlbeans.srcgendir"/>

-->

</goal>

 

這個腳本調用XMLBeans的ant腳本(看xmlbeans文檔),生成了一個可以處理Schema的框架.

 

3. 使用XMLBeans 解析 xml

根據Schema的生成框架,就可以處理符合該Schema定義的XML實例了.這點和Eclipse下的EMF框架十分類似.

XMLBeans框架的兩個最重要的方法:

a) Factory 用來解析XML的,如 PortletAPPType portletApp = PortletAppType.Factory.parse(file); 需要提醒的是,
  one: parse 的參數雖然可以是各種類型,不過最好是 Stream型. 假如直接是File型,在web環境下,會報錯為 Content is not allowed  in prolog.

  two: 在Jboss下使用時,不需要使用jaxen這個包.
b) XmlText() 可以將對象的數據導出為xml格式,而且不一定是要根元素.

看看下面的代碼片斷:

  從 portlet.xml中讀取啟動參數.

       public static Properties getInitParamProps(PortletType portlet) {

Properties props = new Properties();

 

InitParamType[] inits = portlet.getInitParamArray();

 

for (int i = 0; i < inits.length; i++) {

props.setProperty(inits[i].getName().getStringValue(), inits[i]

.getValue().getStringValue());

}

return props;

}

 

 

4.總結

使用XMLBeans處理XML,簡單.高效(可以看看xmlbeans架構師的blog:http://davidbau.com/).比較難的在于假如要處理簡單的xml結構,你還得定義一個schema方便自動產生xmlbeans框架. 而Schema本身就是一種語言,建議采用 XML Spy(home edition 是免費的) 來編寫Schema.

下面這個Schema就是我的Portal Layout的Schema,用XMLBeans來處理的效果很好.

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

<xsd:schema xmlns:portal="http://maoxiang/portal" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://maoxiang/portal" elementFormDefault="unqualified">

<xsd:complexType name="baseType" abstract="true">

<xsd:sequence>

<xsd:element name="preference" type="portal:preferenceType" minOccurs="0" maxOccurs="unbounded">

<xsd:unique name="name-uniqueness">

<xsd:selector XPath="./preference"/>

<xsd:field xpath="name"/>

</xsd:unique>

</xsd:element>

</xsd:sequence>

</xsd:complexType>

<xsd:complexType name="preferenceType">

<xsd:sequence>

<xsd:element name="name" type="xsd:string"/>

<xsd:element name="value" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>

</xsd:sequence>

</xsd:complexType>

<!-- define the page layout -->

<xsd:element name="page" type="portal:pageType" />

<xsd:complexType name="pageType">

<xsd:complexContent>

<xsd:extension base="portal:baseType">

<xsd:sequence>

<xsd:element name="create-time" type="xsd:dateTime"/>

<xsd:element name="page-title" type="xsd:string"/>

<xsd:element name="page-width" type="xsd:string"/>

<xsd:element name="page-language" type="xsd:language"/>

<xsd:element name="page-refresh" type="xsd:integer"/>

<xsd:element name="page-style" type="portal:styleType"/>

<xsd:element name="page-layout" type="portal:layoutType"/>

</xsd:sequence>

</xsd:extension>

</xsd:complexContent>

</xsd:complexType>

<xsd:complexType name="styleType">

<xsd:complexContent>

<xsd:extension base="portal:baseType">

<xsd:sequence>

<xsd:element name="CSS" type="xsd:string"/>

</xsd:sequence>

</xsd:extension>

</xsd:complexContent>

</xsd:complexType>

<xsd:complexType name="layoutType">

<xsd:complexContent>

<xsd:extension base="portal:baseType">

<xsd:sequence>

<xsd:element name="row" type="portal:rowType" minOccurs="0" maxOccurs="unbounded">

<xsd:unique name="row_uuid">

<xsd:selector xpath="."/>

<xsd:field xpath="@id"/>

</xsd:unique>

</xsd:element>

</xsd:sequence>

</xsd:extension>

</xsd:complexContent>

</xsd:complexType>

<xsd:complexType name="rowType">

<xsd:complexContent>

<xsd:extension base="portal:baseType">

<xsd:sequence>

<xsd:element name="col" type="portal:colType" minOccurs="0" maxOccurs="unbounded">

<xsd:unique name="col_uuid">

<xsd:selector xpath="."/>

<xsd:field xpath="@id"/>

</xsd:unique>

</xsd:element>

</xsd:sequence>

<xsd:attribute name="id" type="xsd:string" use="required"/>

</xsd:extension>

</xsd:complexContent>

</xsd:complexType>

<xsd:complexType name="colType">

<xsd:complexContent>

<xsd:extension base="portal:baseType">

<xsd:sequence>

<xsd:element name="unit" type="portal:unitType" minOccurs="0" maxOccurs="unbounded">

<xsd:unique name="unit_uuid">

<xsd:selector xpath="."/>

<xsd:field xpath="@id"/>

</xsd:unique>

</xsd:element>

</xsd:sequence>

<xsd:attribute name="id" type="xsd:string" use="required"/>

<xsd:attribute name="width" type="xsd:string" use="required"/>

</xsd:extension>

</xsd:complexContent>

</xsd:complexType>

<xsd:complexType name="unitType">

<xsd:complexContent>

<xsd:extension base="portal:baseType">

<xsd:sequence>

<xsd:element name="portlet-id" type="xsd:string"/>

</xsd:sequence>

<xsd:attribute name="id" type="xsd:string" use="required"/>

</xsd:extension>

</xsd:complexContent>

</xsd:complexType>

</xsd:schema>

 

 

 



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美精品在线| 精品久久中文字幕| 国产欧美va欧美va香蕉在线| 亚洲国产精品一区二区三区| 成人性教育视频在线观看| 亚洲国产精品久久久久秋霞不卡| 国产精品香蕉在线观看| 亚洲а∨天堂久久精品喷水| 97国产精品人人爽人人做| 精品国偷自产在线视频| 亚洲韩国日本中文字幕| 成人性教育视频在线观看| 国产精品香蕉在线观看| 欧美性xxxx极品高清hd直播| 日韩专区在线播放| 中文字幕亚洲欧美日韩在线不卡| 91精品国产91| 91国产视频在线播放| 国产精品私拍pans大尺度在线| 成人欧美一区二区三区在线| 日日狠狠久久偷偷四色综合免费| 久久亚洲精品国产亚洲老地址| 亚洲精品久久久久中文字幕二区| 精品亚洲aⅴ在线观看| 亚洲欧美资源在线| 一区二区三区四区视频| 亚洲精品成人免费| 深夜精品寂寞黄网站在线观看| 日韩美女福利视频| 91久久久在线| 欧美日韩亚洲视频一区| 精品成人av一区| 亚洲色图色老头| 亚洲欧美日韩成人| 日韩电影网在线| 精品久久香蕉国产线看观看gif| 91在线观看免费高清| 亚洲欧美中文字幕| 国产精品免费久久久久久| 日韩亚洲综合在线| 亚洲精品中文字幕女同| 久久久久久久电影一区| 欧美激情中文字幕乱码免费| 国产97在线|日韩| 欧美最猛性xxxxx免费| 久久精品91久久久久久再现| 久久夜色精品国产| 国产精品男女猛烈高潮激情| 日韩资源在线观看| 久久精品国产99国产精品澳门| 伊人久久久久久久久久久| 中文在线资源观看视频网站免费不卡| 亚洲欧美综合图区| 日韩国产精品亚洲а∨天堂免| 欧美电影免费观看高清完整| 亚洲视频自拍偷拍| 国产精品成人av在线| 国产中文日韩欧美| 欧美日韩在线第一页| 色综合导航网站| 欧美国产高跟鞋裸体秀xxxhd| 色偷偷噜噜噜亚洲男人| 欧美乱大交做爰xxxⅹ性3| 人体精品一二三区| 精品国产999| 国产日韩换脸av一区在线观看| 久久躁日日躁aaaaxxxx| 青青久久av北条麻妃海外网| 91美女高潮出水| 久久亚洲国产精品| 成人国产精品一区| 国产精品久久久久久av下载红粉| 国产精品视频精品视频| 亚洲国产精品国自产拍av秋霞| 91在线直播亚洲| 国产在线精品播放| 日本人成精品视频在线| 亚洲韩国日本中文字幕| 成人字幕网zmw| 欧美乱大交xxxxx| 日韩精品视频在线观看免费| 日韩欧美成人精品| 久久久av亚洲男天堂| 成人免费大片黄在线播放| 亚洲国产97在线精品一区| 亚洲国产日韩欧美在线图片| 欧美激情一区二区三区高清视频| 亚洲xxxxx| 国产精品美女免费| 日韩av综合网站| 91免费福利视频| 亚洲三级免费看| 欧美香蕉大胸在线视频观看| 成人伊人精品色xxxx视频| 亚洲午夜女主播在线直播| 国模精品视频一区二区三区| 这里只有精品在线播放| 国产精品人成电影| 亚洲欧洲日产国产网站| 精品国产一区二区三区久久久| 亚洲国产成人在线视频| 国产日产亚洲精品| 久久天天躁狠狠躁夜夜爽蜜月| 91av视频导航| 51视频国产精品一区二区| 日韩激情av在线免费观看| 亚洲精品美女久久久| 97国产精品视频| 欧美大片免费观看在线观看网站推荐| 欧美在线视频一二三| 97国产成人精品视频| 欧美日韩激情网| 欧美激情国产高清| 日本精品性网站在线观看| 国产精品日韩在线一区| 欧美有码在线观看视频| 欧美精品久久一区二区| 久热精品视频在线免费观看| 国产狼人综合免费视频| 欧美在线中文字幕| 国产美女精品免费电影| 色妞色视频一区二区三区四区| 96精品视频在线| 91中文字幕在线观看| 欧美另类精品xxxx孕妇| 国产精品成人va在线观看| 国产精品日韩在线播放| 91精品久久久久久久久久久| 精品久久久久久久久久ntr影视| 亚洲伊人久久大香线蕉av| 国产综合色香蕉精品| 亚洲毛片在线看| 亚洲视频专区在线| 欧美色另类天堂2015| 亚洲国产精品99| 国产午夜精品全部视频播放| 国产成人高潮免费观看精品| 亚洲欧美一区二区三区久久| 欧美成人免费全部观看天天性色| 国产日韩欧美中文| 国产欧美精品一区二区| 国产精品99蜜臀久久不卡二区| 亚洲人成在线观看| 在线观看免费高清视频97| 免费91麻豆精品国产自产在线观看| 日韩在线视频免费观看高清中文| 92看片淫黄大片看国产片| 97久久精品视频| 岛国视频午夜一区免费在线观看| 中文字幕一区电影| 欧美激情精品久久久久久| 亚洲午夜未删减在线观看| 国产99久久精品一区二区 夜夜躁日日躁| 国产日本欧美一区二区三区| 97视频在线看| 九九热在线精品视频| 亚洲精品国产精品自产a区红杏吧| 欧美一级大片在线免费观看| 一本久久综合亚洲鲁鲁| 国产精品老女人精品视频| 97超级碰碰人国产在线观看| 91欧美日韩一区| 精品自拍视频在线观看| 亚洲人成啪啪网站|