Berkeley DB XML入門

來源:互聯網
上載者:User
Introducing Berkeley DB XML

Berkeley DB XML入門

For dbxml- 2.2.13

第一章 概觀

 

本章內容的以dbxml- 2.2.13 為例,請使用dbxml-2.2.13

基礎

BDB xml 以庫的形式直接練到使用者的應用程式,BDB XML也有一個命令提示字元讓使用者在脫離編程環境的情況下訪問xml文檔,你可以把命令提示字元作為你應用程式的管理工具.

在DBD xml中,所有的資料存放區在成為"容器"(containers)的檔案中,BDB xml shell

提供了簡便的方式操縱"容器"和所有的DBD功能.

 

容器可以把整個XML文檔儲存為一個文檔,或把其中的節點單獨儲存,當整體儲存時,XML文檔就是一個"容器"或一個系統檔案,當儲存節點時,xml被分割成小塊,儲存在"容器"中.

 

在"節點儲存"模式下,取出的文檔的格式就是你儲存的的格式(除非你指定了格式輸出),區別就在於你是怎麼儲存的."節點儲存"模式比"整個文檔儲存"提供更好的效能.所有預設是"節點儲存"模式


使用SHELL

 

shell命令在BDB xml的安裝目錄的bin目錄下,進入bin目錄輸入dbxml啟動shell

如下

Bin>dbxml

d'b'xml>

 

BDB xml的語句有單行的和多行的.

 

BDB xml 用容器來儲存文檔 ,容器包含文檔的集合,在一個容器中的多個文檔可以結構不同,也可以相同.

 

開始我們的BDB xml之旅,首先建立一個容器,我們的第一個例子是一個簡單的電話本,容器的名字叫phone.dbxml(副檔名不是必須為dbxml,但推薦這麼寫)


dbxml>createContainer phone.dbxml

 

因為我們現在所在的目錄是bin>,所以phone.dbxml建立在bin目錄下

 

建立完成後,shell會自動開啟最後一個建立的容器.

 

接下來輸入xml到phone.dbxml

(以'(單引號)包含輸入的資料)

dbxml>putDocument phone1 '<phonebook> (斷行符號)

<name>(斷行符號)

<first>Tom</first>(斷行符號)

<last>Jones</last>(斷行符號)

</name>(斷行符號)

<phone type="home">420-203-2033</phone>(斷行符號)

</phonebook>'(空格)s(斷行符號)(s表示輸入結束)

 

如果成功,則顯示

Document added,name=phone1

再輸入一條記錄

dbxml> putDocument phone2 '<phonebook>(斷行符號)

<name>(斷行符號)
<first>Lisa</first>(斷行符號)
<last>Smith</last>(斷行符號)
</name> <phone type="home">420-992-4801</phone>(斷行符號)
<phone type="cell">390-812-4292</phone>(斷行符號)
</phonebook>'(空格)s(斷行符號)

 

如果成功,則顯示

 

Document added, name = phone2

 

現在phone.dbxml中有了兩條記錄,在下面的例子中應用了幾個基本的基於XPath 語句的XQuery查詢 ,以後會有更複雜的XQuery 語句.

 

XPath語句是XQuery規範的一個主要部分,就像SELECT語句在sql中一樣//注意collection ("phone.dbxml")這個語句,我們也可以簡單的寫為collection ()表示我們的操作對象是當前開啟的容器.

dbxml>query 'collection ("phone.dbxml") /phonebook/name/last/string();

 

查詢成功後顯示

2 objects returned for eager expression '
collection("phone.dbxml")/phonebook/name/last/string()'

 

顯示一下找到的last name

 

dbxml>print

Jones
Smith

 

至此,第一個小實驗已經成功

 

下面我們找一下 lisa的home phone number

 

dbxml>query 'collection("phone.dbxml")/phonebook[name/first="Lisa"]/phone[@type="home"]/string()'

 

查詢成功後顯示

1 objects returned for eager expression '
collection("phone.dbxml")/phonebook[name/first = "Lisa"]/phone[@type = "home"]/string()'


dbxml> print
420-992-4801

 

若要顯示所有屬於420開頭的電話號碼,可以這樣寫

 

dbxml> query 'collection("phone.dbxml")/phonebook/phone[starts-with(.,"420")]/string()'

 

2 objects returned for eager expression '
collection("phone.dbxml")/phonebook/phone[starts-with(., "420")]/string()'

dbxml> print
420-203-2032
420-992-4801

 

上面的查詢語句返回資料的一部分,就像select語句一樣,每一個查詢語句包含兩部分,一:我們所要查詢的容器,我們使用collection("phone.dbxml")來表示查詢的容器,二:是XPath語句,如/phonebook/name/last/string();表示要查詢所有的last name;

 

理解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.