国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一組相關(guān)XML數(shù)據(jù)文件的數(shù)據(jù)類識別方法

2014-10-11 06:23李賽男余金山
關(guān)鍵詞:文檔節(jié)點

李賽男,余金山

(華僑大學(xué) 計算機(jī)科學(xué)與計算學(xué)院,福建 廈門361021)

可擴(kuò)展標(biāo)記語言(extensible markup language,XML)數(shù)據(jù)綁定是指將數(shù)據(jù)從一些XML文件中取出,通過程序表示這些數(shù)據(jù)的過程.即把數(shù)據(jù)綁定到計算機(jī)能夠理解且可以操作的某種內(nèi)存結(jié)構(gòu)中[1],大多數(shù)是綁定到類對象實例上.XML數(shù)據(jù)綁定隱藏了XML數(shù)據(jù)的具體結(jié)構(gòu),方便程序直接使用XML文檔中的數(shù)據(jù)內(nèi)容,使得XML數(shù)據(jù)能夠直接轉(zhuǎn)換為可處理的業(yè)務(wù)數(shù)據(jù)[2].目前,將XML數(shù)據(jù)綁定到Java對象的框架有 XStream,JAXB,XMLBeans,Castor和JiBX[2-6].這些 XML綁定框架的關(guān)鍵是XML數(shù)據(jù)對應(yīng)數(shù)據(jù)類的獲得,即根據(jù)XML模式文件按一定規(guī)則生成的,或用戶自己編寫綁定映射規(guī)則再字節(jié)碼生成.它們可以很好地對遵循同個XML模式文件約束的一組XML文件進(jìn)行XML數(shù)據(jù)綁定.但要解決來自相同應(yīng)用系統(tǒng)中,遵循不同XML模式文件的XML文件的數(shù)據(jù)綁定,會有數(shù)據(jù)類冗余、生成類系統(tǒng)龐大等問題.基于此,本文提出一種從一組相關(guān)XML數(shù)據(jù)文件的數(shù)據(jù)類識別方法.

1 XML結(jié)構(gòu)特點及相關(guān)定義

1.1 XML結(jié)構(gòu)特點

每個XML文檔有且僅有一個根元素,它是所有其他元素的父元素,而所有元素都可擁有子元素、文本內(nèi)容和屬性.從元素的嵌套關(guān)系可以看出XML文檔是一棵文檔樹.相應(yīng)地有一種抽象數(shù)據(jù)結(jié)構(gòu)——文檔對象模型(document object model,DOM).DOM將XML文檔中各種類型的數(shù)據(jù)映射到相應(yīng)的類型對象,構(gòu)建出樹形結(jié)構(gòu)[7],分成文檔節(jié)點、元素節(jié)點、文本節(jié)點、屬性節(jié)點、處理指令節(jié)點、注釋節(jié)點、文檔類型節(jié)點、文檔段節(jié)點、符號節(jié)點、CDATA段節(jié)點、實體節(jié)點和實體引用節(jié)點等12類.

XML文檔可以分為以數(shù)據(jù)為中心和以文檔為中心兩大類.以數(shù)據(jù)為中心的XML文檔常被用于機(jī)器的使用,而以文檔為中心的XML文檔則主要是為人類而設(shè)計的.文中涉及的XML數(shù)據(jù)文檔均屬于以數(shù)據(jù)為中心的XML文檔.它著重于文檔中的數(shù)據(jù),而非文檔格式.具有結(jié)構(gòu)化的數(shù)據(jù)、數(shù)據(jù)粒度大小適中、很少或沒有混合內(nèi)容,以及文檔順序不重要等特點.故在考慮設(shè)計實現(xiàn)問題解決方案時,需要考慮的DOM節(jié)點對象只有屬性節(jié)點、元素節(jié)點和文本節(jié)點.

1.2 XML模式節(jié)點定義

XML文檔模式描述一類XML文檔中數(shù)據(jù)的結(jié)構(gòu)關(guān)系和類型信息,在內(nèi)存可表現(xiàn)為一個樹圖.樹節(jié)點對應(yīng)元素節(jié)點、屬性節(jié)點,節(jié)點的附加信息有元素或?qū)傩缘拿Q、重數(shù)、數(shù)據(jù)類型等.將模式樹圖中的模式節(jié)點進(jìn)行分類,以建立XML模式到數(shù)據(jù)類之間的映射,并定義如下6個模式節(jié)點類型.

1)屬性型.該模式節(jié)點對應(yīng)XML文檔中的屬性節(jié)點.

2)屬性類元素型.該模式節(jié)點對應(yīng)XML文檔中的元素節(jié)點,而該元素節(jié)點沒有子元素節(jié)點或只包含文本節(jié)點,沒有屬性.

3)List類元素型.該模式節(jié)點僅包含一個子模式節(jié)點,而該子模式節(jié)點是非屬性類節(jié)點且對應(yīng)元素節(jié)點的重數(shù)大于1.

4)包裝類元素型.該模式節(jié)點包含多個屬性類節(jié)點和一個非屬性類節(jié)點的子模式節(jié)點.在多XML文件環(huán)境下,包裝類元素型的模式節(jié)點有兩種類型:一種是包含一個非屬性類型的子模式節(jié)點,但具有多套不同的屬性類型的子模式節(jié)點組;另外一種是只有一個屬性類型的子模式節(jié)點組,但包裝多套非屬性類型的子模式節(jié)點.

5)包裝類屬性集型.用于組織包裝類元素型模式節(jié)點下的屬性類型的模式節(jié)點.

6)實體類元素型.該分類設(shè)置為非屬性類型的模式節(jié)點類型的默認(rèn)值,除前面5種類型節(jié)點外,剩下的模式節(jié)點就屬于實體類元素節(jié)點.實體類元素型模式節(jié)點中有一類節(jié)點具有明顯特征,即該模式節(jié)點有子模式節(jié)點且這些子模式節(jié)點均屬于屬性類型.

上述6類模式節(jié)點類型中,屬性型和屬性類元素型統(tǒng)稱屬性類型.至此,模式節(jié)點中包含的信息可以確定有:模式節(jié)點類型、模式節(jié)點名稱、數(shù)據(jù)類型、映射到類的屬性名稱、重數(shù)、子模式節(jié)點列表、所屬XML文件標(biāo)識名、根節(jié)點標(biāo)識、文本標(biāo)識等.

2 XML模式抽取

文中描述的是從一組相關(guān)XML數(shù)據(jù)文件識別實體類的方法,其總體思路是先得到XML文檔的數(shù)據(jù)模式,再將XML數(shù)據(jù)模式映射到實體類.方法的第一步是得到XML文檔的數(shù)據(jù)模式,即為每個XML數(shù)據(jù)文件建立一個XML模式樹圖,并填充模式樹圖中每個模式節(jié)點的信息.在抽取XML模式時,需要判斷模式樹圖中的模式節(jié)點的類型.預(yù)定義的6種模式節(jié)點類型中,屬性型、屬性類元素型、List類元素型根據(jù)其說明的特征可以很容易判斷出來,包裝類屬性集型不需要判斷,而是最后再生成并填進(jìn)模式樹圖的.

第一種類型包裝型模式節(jié)點具有一個非屬性類型和多套不同屬性類型的子模式節(jié)點組.對于這種類型,模式節(jié)點下的屬性類型的子模式節(jié)點的相似度超過閾值A(chǔ)則為實體類元素型,否則為包裝類元素型.第二種類型包裝類元素型模式節(jié)點具有一個屬性類型的子模式節(jié)點組和多套單個非屬性類型的子模式節(jié)點.對于這種類型,模式節(jié)點下的屬性類型的子模式節(jié)點的相似度超過閾值B,并且非屬性類型的子模式節(jié)點的相似度低于閾值C則為包裝類元素型,否則為實體類元素型.

在同一個應(yīng)用系統(tǒng)環(huán)境下,從多個XML文檔生成的多個XML模式樹圖中會有相同名稱的實體類元素型模式節(jié)點.因此,可利用它們的子模式節(jié)點的余弦距離進(jìn)行基于密度聚類,把屬于同一個聚類簇的模式節(jié)點的子模式節(jié)點合并當(dāng)做同一個模式節(jié)點進(jìn)行處理,以此避免模式節(jié)點映射成數(shù)據(jù)類時生成冗余的數(shù)據(jù)類.

對XML數(shù)據(jù)文檔進(jìn)行模式抽取,有如下5個主要步驟.

步驟1 把XML數(shù)據(jù)轉(zhuǎn)換為DOM樹.

步驟2 先根遍歷DOM樹,從中獲得相關(guān)模式信息,創(chuàng)建相應(yīng)類型的模式節(jié)點,并構(gòu)建初步的模式樹圖,具體流程如圖1所示.輸入XML數(shù)據(jù)文檔的DOM元素節(jié)點,輸出結(jié)果是相應(yīng)的模式節(jié)點,且能判斷出相應(yīng)的節(jié)點類型.最先獲得元素節(jié)點的名稱用于設(shè)置模式節(jié)點名,再判斷元素節(jié)點是否符合屬性元素型模式節(jié)點的特征,即元素節(jié)點沒有屬性且沒包含子元素.符合特征,則根據(jù)元素文本內(nèi)容判斷其數(shù)據(jù)類型用于設(shè)置模式節(jié)點的數(shù)據(jù)類型,并返回屬性元素型模式節(jié)點.處理元素節(jié)點及其屬性列表創(chuàng)建的默認(rèn)類型的模式節(jié)點,并設(shè)置模式節(jié)點的重數(shù)信息和文本標(biāo)識等.最后再判斷當(dāng)前模式節(jié)點是否僅包含一個子模式節(jié)點,該子模式節(jié)點是非屬性類節(jié)點且對應(yīng)的元素節(jié)點的重數(shù)大于1,如果是,則將節(jié)點類型設(shè)置為List類元素型.

圖1 初步構(gòu)建模式樹圖的流程Fig.1 Process of the preliminary constructing pattern tree diagram

步驟3 對分布在不同XML模式樹圖中的同名模式節(jié)點進(jìn)行相似度分析,識別包裝類元素型和實體類元素型,并對實體類元素型模式節(jié)點進(jìn)行聚類來完成合并工作,具體流程如圖2所示.先進(jìn)行一個快速優(yōu)化的判斷,即如果輸入的模式節(jié)點列表只有一個模式節(jié)點,且該模式節(jié)點只包含一個多重的默認(rèn)類型的子模式節(jié)點或一個List類元素型子模式節(jié)點,則把該模式節(jié)點的類型設(shè)置為包裝類元素型后結(jié)束;否則,接著根據(jù)輸入的模式節(jié)點列表建立屬性和非屬性類節(jié)點的Base,以此計算出模式節(jié)點列表中每個模式節(jié)點的屬性類和非屬性類節(jié)點向量.如果非屬性節(jié)點列表為空,則說明該模式節(jié)點一定是實體類型;否則,計算屬性類和非屬性類節(jié)點向量列表的相似度A和E.根據(jù)兩次條件判斷模式節(jié)點是否屬于包裝類元素型,如果是,則將模式節(jié)點設(shè)置為包裝類元素型;不是,則將屬性類和非屬性類節(jié)點向量合并得到模式節(jié)點向量列表,再對模式節(jié)點向量列表使用余弦距離進(jìn)行聚類.把聚類得到聚類簇中模式節(jié)點的子節(jié)點合并成新的子模式節(jié)點列表,并替換簇中模式節(jié)點的子模式節(jié)點列表.另外,為區(qū)別同名的不同實體類節(jié)點的模式節(jié)點,在模式節(jié)點名稱后加上序列數(shù)1,2,….

步驟4 從所有的模式樹圖中識別創(chuàng)建不重復(fù)的包裝類屬性集型模式節(jié)點.將所有模式樹圖中包裝類元素型模式節(jié)點下的屬性類子節(jié)點打包到一個新建的包裝類屬性集型模式節(jié)點的子模式節(jié)點列表中,再將此新建的模式節(jié)點替代原來的屬性類子節(jié)點,插入到包裝類元素型模式節(jié)點下作為新子模式節(jié)點.包裝類屬性集型模式節(jié)點是可以重用的,但必須保證包裝類元素型模式節(jié)點下的每個屬性類型模式節(jié)點的名稱和重數(shù)是相同的.

步驟5 后根遍歷所有模式樹圖,填充模式節(jié)點中剩余的模式信息.包括映射到類的屬性名稱的設(shè)置,數(shù)據(jù)類型的設(shè)置.List類元素型和包裝類元素型模式節(jié)點需要添加子模式節(jié)點的數(shù)據(jù)類型添加泛型信息,包裝類屬性集型和實體類元素型需要確定映射的數(shù)據(jù)類的類名.

將一組相關(guān)XML數(shù)據(jù)文檔經(jīng)過5個步驟處理后得到完整的XML模式樹圖.圖中的每個模式節(jié)點包含了完整的模式信息,作為XML數(shù)據(jù)模式映射到實體類的輸入數(shù)據(jù).

圖2 模式樹圖的模式節(jié)點的進(jìn)一步分類流程Fig.2 Further classification process of the mode pattern tree node

3 XML模式樹圖到類的映射

從一組XML數(shù)據(jù)文件中識別數(shù)據(jù)類的最后步驟是,將XML模式樹圖中的模式節(jié)點按照一定規(guī)則映射到數(shù)據(jù)類.把識別出的模式節(jié)點特征信息存儲在模式節(jié)點的類型信息中,在XML模型到類層次的映射過程會根據(jù)模式節(jié)點類型,將模式節(jié)點映射成不同類型的數(shù)據(jù)類.

映射規(guī)則有如下8個方面:1)模式節(jié)點的模式節(jié)點名稱映射成數(shù)據(jù)類的類名;2)模式節(jié)點的子模式節(jié)點映射成數(shù)據(jù)類的成員變量,該子模式節(jié)點映射到類字段名稱映射成成員變量名,子模式節(jié)點的數(shù)據(jù)類型映射成成員變量的數(shù)據(jù)類型;3)如果是模式節(jié)點的文本標(biāo)識,則新增一個名為_value,類型為字符串的成員變量;4)如果子模式節(jié)點的重數(shù)大于1,則需將用集合類類名包裝原數(shù)據(jù)類型作為其數(shù)據(jù)類型;5)若成員變量的數(shù)據(jù)類型是泛型,則還需在該成員變量之前添加注解的配置信息說明具體的泛型信息;6)給每個數(shù)據(jù)類的成員變量生成setter和getter;7)將包裝類屬性集節(jié)點類型、實體類元素節(jié)點類型和包裝類元素節(jié)點類型的模式節(jié)點分別生成放在vo.attribute包中的屬性類、放在vo.entity包中的實體類和放在vo.wrapper包中的包裝類;8)包裝類元素節(jié)點類型的模式節(jié)點映射成的包裝類是預(yù)先定義的泛型類ListWrapper〈S,T〉和SingleWrapper〈S,T〉.這2個包裝類的只有2個成員變量分別對應(yīng)包裝類屬性集節(jié)點類型的子模式節(jié)點和非屬性類節(jié)點類型的子模式節(jié)點.

經(jīng)過上述映射規(guī)則,得到數(shù)據(jù)類從一組XML數(shù)據(jù)文件中識別出的數(shù)據(jù)類.XML模式到類層次映射方法和目前XML綁定框架的模式編譯器生成類文件的映射規(guī)則不同的是,還要根據(jù)模式節(jié)點的類型進(jìn)一步區(qū)分映射成不同類型的類,如集合類、泛型類、實體類等,以減小生成類系統(tǒng)的規(guī)模.

4 應(yīng)用實例

將提出的一組相關(guān)XML數(shù)據(jù)識別方法應(yīng)用在一個Last.FM OpenAPI的數(shù)據(jù)實體類代碼生成器的實現(xiàn)中.該代碼生成器先從網(wǎng)絡(luò)上抓取每個Last.FM OpenAPI返回的XML數(shù)據(jù),得到一組相關(guān)XML數(shù)據(jù)文件;然后,使用文中方法獲得識別出的數(shù)據(jù)類的元數(shù)據(jù);最后,在結(jié)合類模板輸出類定義代碼源文件.該代碼生成器從網(wǎng)絡(luò)上獲取的Last.FM OpenAPI返回的XML文件有131個,使用文中方法輸入預(yù)定義的閾值A(chǔ)、閾值B、閾值C是經(jīng)驗估計值,分別是70%,70%,30%.經(jīng)過計算,最終識別出47個實體類,38個屬性類,總共85個類.如果使用傳統(tǒng)的數(shù)據(jù)綁定框架對131個XML文件進(jìn)行數(shù)據(jù)類生成,最終得到的數(shù)據(jù)類最少有131個.使用文中方法生成類的個數(shù)比之前的方法降低35%,而且生成的實體類和實體一一對應(yīng)沒有存在冗余.該代碼生成器的結(jié)果說明,文中提出的方法可以較好地解決當(dāng)前XML綁定框架類中生成器產(chǎn)生的類冗余和生成類系統(tǒng)規(guī)模過大的問題.

5 結(jié)束語

提出從一組相關(guān)XML數(shù)據(jù)文件的數(shù)據(jù)實體類識別的方法.該方法能有效解決當(dāng)前XML綁定框架在綁定一組來自同一個應(yīng)用框架下,遵循多個XML模式文件的XML文件時產(chǎn)生的類冗余和生成類系統(tǒng)規(guī)模過大的問題.但該方法存在的不足是,區(qū)別包裝類元素型和實體類元素型的模式節(jié)點中的相似度閾值是預(yù)先給定的,后續(xù)工作需采用啟發(fā)式及回歸模型[10]對相似度閾值進(jìn)行調(diào)整確定.

[1] MCLAUGHLIN B.Practical data binding:Get your feet wet in the real world[EB/OL].[2004-05-20].http:∥www.ibm.com/developerworks/xml/library/x-pracdb1/index.html.

[2] 焦春芳,羅曉沛.基于Castor的數(shù)據(jù)綁定技術(shù)[J].計算機(jī)工程與設(shè)計,2008,29(17):4550-4553.

[3] 吳翔,饒若楠.連接 XML與對象的橋梁——XMLBean[J].計算機(jī)工程,2004,30(增刊1):69-71.

[4] BANGALORE R.Use XStream to serialize java objects into XML[EB/OL].[2008-07-23].http:∥www.ibm.com/developerworks/xml/library/x-xstream/.

[5] SIMEONI F,LIEVENS D,CONNOR R,et al.Language bindings to XML[J].IEEE Internet Computing,2003,7(1):19-27.

[6] 許暉.應(yīng)用XML實現(xiàn)Java對象序列化技術(shù)簡述[C]∥第七屆中國Java技術(shù)及應(yīng)用交流大會文集.北京:[s.n.],2004:73-78.

[7] 李青山,陳平.對象層次上的XML數(shù)據(jù)綁定模型的研究[J].西安電子科技大學(xué)學(xué)報,2001,28(6):768-771.

[8] 龐劍鋒,卜東波,白碩.基于向量空間模型的文本自動分類系統(tǒng)的研究與實現(xiàn)[J].計算機(jī)應(yīng)用研究,2001,18(9):23-26.

[9] 李桂林,陳曉云.關(guān)于聚類分析中相似度的討論[J].計算機(jī)工程與應(yīng)用,2004(31):64-66.

[10] ZHANG Yi,CALIAN J.Maximum likelihood estimation for filtering thresholds[C]∥Proc of the 24th Annual International ACM SIGIR Conference on Research and Development in Information Retrieval.New York:ACM Press,2001:294-302.

猜你喜歡
文檔節(jié)點
CM節(jié)點控制在船舶上的應(yīng)用
淺談Matlab與Word文檔的應(yīng)用接口
Analysis of the characteristics of electronic equipment usage distance for common users
有人一聲不吭向你扔了個文檔
基于AutoCAD的門窗節(jié)點圖快速構(gòu)建
概念格的一種并行構(gòu)造算法
結(jié)合概率路由的機(jī)會網(wǎng)絡(luò)自私節(jié)點檢測算法
Word文檔 高效分合有高招
基于RI碼計算的Word復(fù)制文檔鑒別
文檔查詢語言O(shè)DQ查詢優(yōu)化技術(shù)
灌阳县| 澄江县| 甘德县| 珲春市| 射阳县| 长海县| 南投县| 北碚区| 南安市| 自治县| 道真| 延吉市| 三台县| 突泉县| 舟山市| 阜阳市| 仙居县| 莒南县| 博爱县| 繁昌县| 太仆寺旗| 阿巴嘎旗| 怀来县| 洛浦县| 加查县| 江孜县| 南丹县| 海林市| 奎屯市| 巩义市| 高阳县| 方城县| 鄯善县| 芜湖市| 湘潭市| 庆阳市| 肇东市| 苍山县| 通河县| 青龙| 武威市|