![XMLDataObject全接觸_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/69b64707-d606-487f-9e68-4aedbc719bf6/69b64707-d606-487f-9e68-4aedbc719bf61.gif)
![XMLDataObject全接觸_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/69b64707-d606-487f-9e68-4aedbc719bf6/69b64707-d606-487f-9e68-4aedbc719bf62.gif)
![XMLDataObject全接觸_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/69b64707-d606-487f-9e68-4aedbc719bf6/69b64707-d606-487f-9e68-4aedbc719bf63.gif)
![XMLDataObject全接觸_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/69b64707-d606-487f-9e68-4aedbc719bf6/69b64707-d606-487f-9e68-4aedbc719bf64.gif)
![XMLDataObject全接觸_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/69b64707-d606-487f-9e68-4aedbc719bf6/69b64707-d606-487f-9e68-4aedbc719bf65.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、XMLDataObject全接觸文檔編號:文檔名稱:編 寫:編寫日期:審 核:審核日期:批 準:批準日期:神州數(shù)碼(中國)有限公司Frame技術(shù)文檔制作項目組修訂狀況章節(jié)編號章節(jié)名稱修訂內(nèi)容簡述修訂人修訂日期修訂前版本號批準人增加內(nèi)容說明toXMLWithAttr方法。焦桐衛(wèi)20061017XMLDataObject提供游標機制,能夠動態(tài)操縱其中元素或?qū)傩?。在存取方法上,適應(yīng)于關(guān)系模型,提供了行、列仿照機制,便于應(yīng)用開發(fā)。同時它還實現(xiàn)了DataObject接口,提供對數(shù)據(jù)的基本操作及事件的響應(yīng),如清除所有記錄、設(shè)置第row行第col列的值、檢索開始事件(retrieveStart)、檢索執(zhí)行完
2、畢事件(retrieveEnd)等,因此XMLDataObject廣泛用于請求報文的處理等方面。掌握XMLDataObject的使用需要先理解三個概念:一個是游標機制,其次是帶子表的二維表映射,再者是相對路徑和全路徑模式。我們先看下面的XML數(shù)據(jù)片斷:<root><amasterTable><arow><col1>v11</col1><col2>v12</col2></arow><brow><adetailTable><crow><col3>v11&l
3、t;/col3><col4>v12</col4></crow><drow><col5>v21</col5><col6>v22</col6></drow></adetailTable></brow></amasterTable></root>當(dāng)我們把注意力放在<arow>節(jié)點上,以<arow>節(jié)點為基準點來看數(shù)據(jù)就會發(fā)現(xiàn)可以按照關(guān)系型數(shù)據(jù)庫的二維表的方式來解讀數(shù)據(jù),即認為<arow>節(jié)點代表著一行,而
4、<col1>和<col2>各自代表一列。而如果我們以<brow>為基準點來看數(shù)據(jù)就會發(fā)現(xiàn)可以把<adetailTable>節(jié)點理解為<amasterTable>節(jié)點的一個子表。我們看數(shù)據(jù)的目光所在的基準點其實就是XMLDataObject的游標,而我們對數(shù)據(jù)的這種理解方式即是XMLDataObject到二維表的映射。對于數(shù)據(jù)定位,我們可以有兩種模式,舉個例子,假如我們要取得<col1>節(jié)點的值,一種模式是將游標移動<arow>節(jié)點,再取<arow>節(jié)點下名為“col1”的節(jié)點的值;另一種模式是不管游
5、標在哪,我們就取名為“root. amasterTable. arrow. col1”的節(jié)點的值,這兩種模式都能正確的取到節(jié)點值,區(qū)別就在于一個用相對路徑模式操作,而一個是用全路徑模式操作。到從上面的例子我們可以看出,隨著游標的移動,我們看到的數(shù)據(jù)是不一樣的,這種二維表映射關(guān)系是動態(tài)的,換言之,對于同一個節(jié)點,游標處于不同的位置時這個節(jié)點可能看上去是一列,也可能是一行或是其他,這也就引出一個重要的觀念:為便于理解和操作,我們最好將游標停在適當(dāng)?shù)奈恢蒙希@在XMLDataObject的實際應(yīng)用中就是移動當(dāng)前根節(jié)點。XMLDataObject結(jié)合了XML和數(shù)據(jù)對象的特性,對它的操作主要就是插入節(jié)點
6、和刪除節(jié)點、讀取以及更改節(jié)點的屬性和節(jié)點的值、數(shù)據(jù)的轉(zhuǎn)換等。下面將分門別類地介紹XMLDataObject的各個常用方法。 一、 構(gòu)造函數(shù)XMLDataObject()創(chuàng)建一個不含任何數(shù)據(jù)的空的數(shù)據(jù)對象,如果需要,我們可以在這個空的數(shù)據(jù)對象上插入數(shù)據(jù)。XMLDataObject(Element t) throws NodeNotFoundException用已知的元素t來構(gòu)造數(shù)據(jù)對象并將根節(jié)點設(shè)為該元素節(jié)點。XMLDataObject(Element t,String startPath) throws NodeNotFoundException在已知的元素t中找尋startPath參數(shù)指示的
7、節(jié)點,以找到的節(jié)點作為根節(jié)點來構(gòu)造數(shù)據(jù)對象。二、 移動游標void setXmlTree(Item t)將當(dāng)前根節(jié)點即游標移動到t參數(shù)所指的節(jié)點上,這需要我們事先獲得該節(jié)點對象。void rootScrollTo(String nodeName) throws DOException將游標移動到nodeName參數(shù)所指的的節(jié)點上,nodeName參數(shù)應(yīng)為全路徑方式的節(jié)點名稱。void resetRoot() throws DOException重置根節(jié)點,將游標移動到原始根節(jié)點上。三、 插入節(jié)點long insert(long row,String rowName,String cols) 在
8、row參數(shù)指定的行號上插入一個名為參數(shù)rowName指定名稱的空行,該行的各個列的名稱由cols參數(shù)指定。如果row參數(shù)小于0,則將該空行插入到第0行,如果row參數(shù)大于XMLDataObject數(shù)據(jù)的行數(shù),則將該空行插入到最后。void insertAsChild(Element e1, Element e2) throws DOException將元素e2作為元素e1的子節(jié)點插入到XMLDataObject中。例如:插入前數(shù)據(jù)如下:<e1></e1><e2></e2>插入后數(shù)據(jù)變?yōu)椋?lt;e1><e2></e2>
9、;</e1>void insertAsChild(int position, String nodeName, String insertName, String insertValue) throws DOException在第position個名為nodeName的節(jié)點處插入子節(jié)點,子節(jié)點的名稱為insertName,值為insertValue。插入前數(shù)據(jù)如下:<ROW><F1>1</F1><F2>2</F2></ROW><ROW><F1>1</F1><F2>
10、2</F2></ROW>執(zhí)行下面兩行代碼:insertAsChild(-1, "ROOT.ROW.F1", "FF1", "11");insertAsChild(0, "ROOT.ROW", "RR1", "111");數(shù)據(jù)變?yōu)椋?lt;ROW><F1>1</F1><F2>2</F2><RR1>111</RR1><RR1>111</RR1></R
11、OW><ROW><F1><FF1>11</FF1></F1><F2>2</F2></ROW>void insertAsChild(int position, String nodeName, String insertNames, String insertValues) throws DOException在第position個名為nodeName的節(jié)點處插入若干子節(jié)點,子節(jié)點的名稱數(shù)組為insertNames,值數(shù)組為insertValues。名稱數(shù)組與值數(shù)組的長度要一致,名/值順序要一一
12、對應(yīng)。插入前數(shù)據(jù)如下:<ROW><F1>1</F1><F2>2</F2></ROW><ROW><F1>1</F1><F2>2</F2></ROW>執(zhí)行下面兩行代碼:insertAsChild(-1, "ROOT.ROW.F1", new String "FF1","FF2","FF3", new String "11","22",&q
13、uot;33");insertAsChild(0, "ROOT.ROW", new String "RR1","RR2","RR3", new String "111","222","333");數(shù)據(jù)變?yōu)椋?lt;ROW><F1>1</F1><F2>2</F2><RR1>111</RR1><RR2>222</RR2><RR3>333&
14、lt;/RR3></ROW><ROW><F1><FF1>11</FF1><FF2>22</FF2><FF3>33</FF3></F1><F2>2</F2></ROW>void insertAsParent(Element e1, Item item) throws DOException將item作為e1的父節(jié)點插入到XMLDataObject中。例如:插入前數(shù)據(jù)如下:<parent><e1></e1&g
15、t;</parent><item><item>插入后數(shù)據(jù)變?yōu)椋?lt;parent><item><e1></e1><item></parent>void insertAsSibling(Element e1, Element e2) throws DOException將e2作為e1的兄弟節(jié)點插入到XMLDataObject中。例如:插入前數(shù)據(jù)如下:<parent><e1></e1></parent><e2></e2>插入
16、后數(shù)據(jù)變?yōu)椋?lt;parent><e1></e1><e2></e2></parent>void insertDo(XMLDataObject xdo1)throws Exception將xdo1代表的XML數(shù)據(jù)對象插入本數(shù)據(jù)對象的根節(jié)點下,并設(shè)置當(dāng)前數(shù)據(jù)對象的根為原始根節(jié)點。例如:a是一個XMLDataObject對象,它的內(nèi)容為<root><clientinfo><custname>神州數(shù)碼5</custname><creditlevel>1</creditl
17、evel><custbirth>20021012</custbirth><occptypecode>1</occptypecode><certtype>1</certtype><certnum>5555555</certnum></clientinfo></root>b也是一個XMLDataObject對象,它的內(nèi)容為<userbasicinfo><svcnum>lt;/svcnum><password>
18、222452</password><custid>xinc0300000389</custid><corrtype>1</corrtype></userbasicinfo>執(zhí)行a.insertDo(b)后,a的數(shù)據(jù)為<root><clientinfo><custname>神州數(shù)碼5</custname><creditlevel>1</creditlevel><custbirth>20021012</custbirth><o
19、ccptypecode>1</occptypecode><certtype>1</certtype><certnum>5555555</certnum></clientinfo><userbasicinfo><svcnum>lt;/svcnum><password>222452</password><custid>xinc0300000389</custid><corrtype>1</corrtyp
20、e></userbasicinfo></root>void insertDo(XMLDataObject xdo1,String nodePath)throws Exception將xdo1代表的XML數(shù)據(jù)對象插入第一個名為nodePath的節(jié)點下,并設(shè)置當(dāng)前數(shù)據(jù)對象的根為原始根節(jié)點。例如:a是一個XMLDataObject對象,它的內(nèi)容為<root><clientinfo><custname>神州數(shù)碼5</custname><creditlevel>1</creditlevel><cu
21、stbirth>20021012</custbirth><occptypecode>1</occptypecode><certtype>1</certtype><certnum>5555555</certnum></clientinfo></root>b也是一個XMLDataObject對象,它的內(nèi)容為<userbasicinfo><svcnum>lt;/svcnum><password>222452</pas
22、sword><custid>xinc0300000389</custid><corrtype>1</corrtype></userbasicinfo>執(zhí)行a.insertDo(b,"clientinfo")后,a的數(shù)據(jù)為<root><clientinfo><custname>神州數(shù)碼5</custname><creditlevel>1</creditlevel><custbirth>20021012</custbirth
23、><occptypecode>1</occptypecode><certtype>1</certtype><certnum>5555555</certnum><userbasicinfo><svcnum>lt;/svcnum><password>222452</password><custid>xinc0300000389</custid><corrtype>1</corrtype></
24、userbasicinfo></clientinfo></root>void insertDo(XMLDataObject xdo1,String nodePath,int n)throws Exception將xdo1代表的XML數(shù)據(jù)對象插入第n個(從零開始計數(shù))名為nodePath的節(jié)點下,并設(shè)置當(dāng)前數(shù)據(jù)對象的根為原始根節(jié)點。例如:a是一個XMLDataObject對象,它的內(nèi)容為<root><clientinfo><custname>神州數(shù)碼5</custname><creditlevel>1<
25、;/creditlevel><custbirth>20021012</custbirth><occptypecode>1</occptypecode><certtype>1</certtype><certnum>5555555</certnum></clientinfo><clientinfo><custname>神州數(shù)碼5</custname><creditlevel>1</creditlevel><custbir
26、th>20021012</custbirth><occptypecode>1</occptypecode><certtype>1</certtype><certnum>5555555</certnum></clientinfo></root>b也是一個XMLDataObject對象,它的內(nèi)容為<userbasicinfo><svcnum>lt;/svcnum><password>222452</password
27、><custid>xinc0300000389</custid><corrtype>1</corrtype></userbasicinfo>執(zhí)行a.insertDo(b,"clientinfo",1)后,a的數(shù)據(jù)為<root><clientinfo><custname>神州數(shù)碼5</custname><creditlevel>1</creditlevel><custbirth>20021012</custbirth>
28、;<occptypecode>1</occptypecode><certtype>1</certtype><certnum>5555555</certnum></clientinfo><clientinfo><custname>神州數(shù)碼5</custname><creditlevel>1</creditlevel><custbirth>20021012</custbirth><occptypecode>1</o
29、ccptypecode><certtype>1</certtype><certnum>5555555</certnum><userbasicinfo><svcnum>lt;/svcnum><password>222452</password><custid>xinc0300000389</custid><corrtype>1</corrtype></userbasicinfo></clientinf
30、o></root>四、 刪除節(jié)點void delete(Element e1) throws DOException將e1節(jié)點及該節(jié)點以下節(jié)點從XMLDataObject中刪除。例如:刪除前數(shù)據(jù)如下:<parent><e1></e1></parent>刪除后數(shù)據(jù)變?yōu)椋?lt;parent></parent>void deleteAndTakeOverTheChildren(Element e1) throws DOException將e1節(jié)點從XMLDataObject中刪除,但是接管e1節(jié)點以下的節(jié)點。例如:
31、刪除前數(shù)據(jù)如下:<parent><e1><item></item></e1></parent>刪除后數(shù)據(jù)變?yōu)椋?lt;parent><item></item></parent>五、 操縱數(shù)據(jù)對象static XMLDataObject unionXDO(XMLDataObject xdo) throws Exception合并xdo參數(shù)中的數(shù)據(jù)對象,并以第一個數(shù)據(jù)對象的根節(jié)點作為合并后的數(shù)據(jù)對象的根節(jié)點。例如:xdo0數(shù)據(jù)如下:<root><parent1>
32、<item1></item1></parent1></root>xdo1數(shù)據(jù)如下:<parent2><item2></item2></parent2>xdo2數(shù)據(jù)如下:<parent3><item3></item3></parent3>合并后數(shù)據(jù)變?yōu)椋?lt;root><parent1><item1></item1></parent1><parent2><item2><
33、/item2></parent2><parent3><item3></item3></parent3></root>Element getColElement(Element row,int col)取得row元素的第col列元素。例如:row元素如下:<Row><c1></c1><c2></c2></Row>那么取第0列元素得到的就是:<c1></c1>Element getColElement(Element row,
34、String colName)取得row元素的名為colName的列元素。int getColumnCount()取得列的個數(shù)(實際上是取第0行數(shù)據(jù)的列的個數(shù))int getColumnCount(int arow)取得第arow行數(shù)據(jù)的列的個數(shù)。實際可能出現(xiàn)各行的列的個數(shù)不一樣的情況,例如:<or><ormap table="table1"><orcolumn columname="c1"></orcolumn><orcolumn columname="c2"></o
35、rcolumn></ormap><ormap table="table2"><orcolumn columname="c1"></ormap></or>Element getCutRoot()取得當(dāng)前起始路徑startPath所指定的子根節(jié)點XMLDataObject getDo(String nodePath) throws Exception取得nodePath指定的子節(jié)點所對應(yīng)的XMLDataObject對象。例如:假定以下xml文件對應(yīng)的XMLDataObject為xdo<S
36、TUDENT><ITEM><STUDENT_ID>crab</STUDENT_ID><STUDENT_NAME>alive</STUDENT_NAME></ITEM><ITEM><STUDENT_ID>whelk</STUDENT_ID><STUDENT_NAME>dead</STUDENT_NAME></ITEM></STUDENT>執(zhí)行xdo.getDo("ITEM")返回的XMLDataObject對應(yīng)的XM
37、L如下:<ITEM><STUDENT_ID>crab</STUDENT_ID><STUDENT_NAME>alive</STUDENT_NAME></ITEM>XMLDataObject getDo(String nodePath,int n) throws Exception取得nodePath指定的子節(jié)點下第n個XMLDataObject對象。例如:假定以下xml文件對應(yīng)的XMLDataObject為xdo<STUDENT><ITEM><STUDENT_ID>crab</STU
38、DENT_ID><STUDENT_NAME>alive</STUDENT_NAME></ITEM><ITEM><STUDENT_ID>whelk</STUDENT_ID><STUDENT_NAME>dead</STUDENT_NAME></ITEM></STUDENT>執(zhí)行xdo.getDo("ITEM",1)返回的XMLDataObject對應(yīng)的XML如下:<ITEM><STUDENT_ID>whelk</STUDEN
39、T_ID><STUDENT_NAME>dead</STUDENT_NAME></ITEM>ArrayList getItem(Element rt,String itemName)取得rt節(jié)點下名稱為itemName的所有節(jié)點。itemName應(yīng)為全路徑名稱。Object getItemAny(long arow,int col)取得第arow行第col列的節(jié)點或者節(jié)點的值(如果該節(jié)點為葉節(jié)點)。Object getItemAny(long arow,String colName)取得第arow行,列名稱為colName的節(jié)點或者節(jié)點的值(如果該節(jié)點為
40、葉節(jié)點)。Attribute getItemAttribute(long arow,int col)取得第arow行第col列的節(jié)點的屬性。Attribute getItemAttribute(long arow,String colName)取得第arow行,列名稱為colName的節(jié)點的屬性。Object getItemNameAny(long arow,int col)取得第arow行第col列的節(jié)點的名稱。Object getRow(long arow)取得arow參數(shù)指定的行節(jié)點。long getRowCount()取得行的個數(shù)。String getRowName(long arow
41、)取得arow參數(shù)指定的行的名稱。Element getUniqueItem(String itemName)取得名為itemName的唯一結(jié)點。boolean isBSingleRow()當(dāng)前數(shù)據(jù)對象是否是單行模式。即當(dāng)前的數(shù)據(jù)對象是否只表示一行數(shù)據(jù)。void rename(String newName)將當(dāng)前起始路徑startPath所指定的子根節(jié)點的名稱改為newName。void renameItem(long arow, String colName, String newName) throws IllegalArgumentException將第arow行名為colName的節(jié)點
42、的名稱改為newName。void renameRow(long arow, String newName)將arow參數(shù)指定的行節(jié)點的名稱改為newName。void reset()清除數(shù)據(jù)對象中的所有數(shù)據(jù)。void setBFullPathMode(boolean b)設(shè)置路徑模式為全路徑模式或者相對路徑模式。b=true時為全路徑模式,b=false時為相對路徑模式。六、 讀取數(shù)據(jù)String getItemValue(Element rt,String itemName)取得rt節(jié)點下名為itemName的節(jié)點的值。String getItemValue(String nodeName)取得根節(jié)點下名為nodeName的節(jié)點的值。String getRowAttributeValue(long arow,int att_idx)取得arow參數(shù)指定的行節(jié)點的第att_idx個屬性的值。String getRowAttributeValue(long arow,String name)取得arow參數(shù)指定的行節(jié)點的名為name的屬性的值。long retrieve() throws DOException取得startPath所指定的子根節(jié)點的數(shù)據(jù)。七、 更改數(shù)據(jù)void setItemAny(lon
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲服務(wù)承攬合同三篇
- 管道行業(yè)安全管理工作心得
- 2025年全球及中國丙二醛行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國頭發(fā)護理用神經(jīng)酰胺行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國DHA微囊粉行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國三維足底掃描系統(tǒng)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球電動跨式堆垛機行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國介孔二氧化硅微球行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國多相真空萃取機行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球豆莢酒店行業(yè)調(diào)研及趨勢分析報告
- 2023-2024年員工三級安全培訓(xùn)考試題及參考答案(綜合題)
- 2024年人教版初中英語九年級全冊單元測評與答案
- 【渞法】學(xué)會自我保護教學(xué)設(shè)計 七年級道德與法治下冊(統(tǒng)編版2024)
- 2025-2030年中國融雪劑行業(yè)運行動態(tài)及發(fā)展前景預(yù)測報告
- 2025保安部年度工作計劃
- 2024年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫
- 人居環(huán)境綜合治理項目項目背景及必要性分析
- 招標采購基礎(chǔ)知識培訓(xùn)
- 電力系統(tǒng)分布式模型預(yù)測控制方法綜述與展望
- 2024年注冊建筑師-二級注冊建筑師考試近5年真題附答案
評論
0/150
提交評論