Định hướng qua tài liệu XML để rút trích dữ liệu:

Một phần của tài liệu khóa luận tìm hiểu công nghệ xml và xây dựng hệ thống quản lý dịch vụ khách hàng (esupport) (Trang 38 - 43)

3 World Wide Web Consortium

2.2.2. Định hướng qua tài liệu XML để rút trích dữ liệu:

liệu:

2.2.2.1. Sử dụng lớp XMLTextReader

Trong phần trên, chúng ta đã biết cách để đọc vào một tài liệu XML, phần này chúng ta sẽ định hướng qua tài liệu XML và chỉ lấy những đữ liệu nào cần thiết cho ứng dụng của mình. Ví dụ như nếu nút đó là ProdwctName

chúng ta sẽ đọc và hiển thị thông tin trên một listbox, cụ thể như sau:

while (myRdr.Read()) { 1£ (Xm1NoteType.El1ement) { i£ (myRdr.Name="ProductName") { myRdr.. Read () ;

1stProducts. Ttems .Add (myRdr .ReadString) ;

}

myRdr.Close();

SVTH: Nguyễn Thị Kim Phượng GVHD: Th.S Nguyễn Trần Minh Thư

2.2.2.2. Sử dụng mô hình DOM

Một cây được tạo thành từ nhiều nút. Và một nút cũng là một cây chứa

những nút khác. Nút lá thì không có nút con, vì thế nút này đùng để hiển thị

đữ liệu văn bản.

Lớp XmMHDafaDocument kế thừa từ lớp XmlDocumemt, vì thế nó cũng có một số phương thức như lớp XmlDocwmem. Điều thú vị nhất của XmIDafaDocumenf là nó cung cấp hai cách nhìn trên cùng một đữ liệu đó là

XML view và relational view.

XmIDafaDocumenf có một thuộc tính tên là DzfaSer, thông qua DafaSet, XmlIDafaDocumenf trình bày dữ liệu như một hoặc nhiều bảng (DataTable)

có quan hệ hoặc không có quan hệ. Khi chúng ta sử dụng phương thức Loađ()

để tải một đối tượng XmDafaDocuwer, chúng ta có thể xem nó như một

cây hoặc như một bảng (hoặc nhiều bảng). Sau đây là hình minh hoạ cho hai

cách nhìn về một tài liệu XME khi sử dụng XmIDafaDocument.

mm trong CSDL 5 Hình 2-1: Mô hình DOM

SVTH: Nguyễn Thị Kim Phượng GVHD: Th.S Nguyễn Trần Minh Thư

2.2.3. Truy vấn dữ liệu XML sử dụng XPathDocument và XPathNavigator và XPathNavigator

Việc sử dụng lớp XimlDocument và XmlDafaDocument đễ xử lý tài liệu

XML cũng có một vài hạn chế. Đầu tiên, toàn bộ tài liệu phải được lưu trong

cache. Thêm vào đó, việc định hướng thông qua một cây sẽ gặp nhiều khó

khăn, và định hướng thông qua những view quan hệ cũng không thuận tiện. Để khắc phục vấn đề này, VS.NET cung cấp lớp XPafhDocwment và

XPathNavigator.

Lớp XPathDocumenf cho phép chúng ta xử lý dữ liệu XML mà không phải tải lên toàn bộ cây. Và XPafh/Navigaror sử dụng đề thao tác trên dữ liệu của XPathDocumeni. Nó cũng được sử đụng để thao tác trên XmJDocument,

và XmlIDatfaDocumen. Nó hỗ trợ kỹ thuật định hướng cho việc chọn nút, lặp qua các nút đã chọn, và làm việc trên những nút đã chọn này. Để thực hiện được việc này, nó sử dụng biểu thức XParh.

XPath chỉ ra cú pháp "truy vấn cho việc rút trích đữ liệu từ một tài liệu XML. Ý tưởng sử dụng tương tự như trong SQL, tuy nhiên cú pháp của nó thì khác biệt. Nói chung, cú pháp truy vấn XPøh có vẻ phức tạp. Tuy nhiên qua

các ví dụ sau, Chúng ta có thể thấy được sự ngắn gọn và hiệu quả trong việc

rút trích dữ liệu XML. Chỉ tiết về cú pháp của XPazh sẽ không đi sâu trong bài viết này vì nó nghiên về lĩnh vực khác. Tuy nhiên, chúng ta cũng minh họa vài cách sử dụng biểu thức XPzrh. Sau đây chúng ta xem qua ví dụ một

tài liệu XML mà sẽ được sử dụng để thực hiện truy vấn trên đó. Tài liệu này

đặt tên là bank1.xmi. <?xml version="1.0" encoding="utf-8" ?> <Bank> <Account>

SVTH: Nguyễn Thị Kim Phượng GVHD: Th.S Nguyễn Trần Minh Thư

<AccountNo>A1112</AccountNo> <NÑame>Pepsi Beagle</Name> <Balance>1200.89</Balance> <S§tate>OH</State> </Account> <Account> <AccountNo>A7833</AccountNo> <Ñame>Erank Horton</Name> <Balance>8964.55</Balance> <S§tate>MI</State> </Account> </Bank>

" Ví dụ 1: Giả sử chúng ta muốn truy vấn tất:cả tên của tài khoản. Biểu thức XPath như sau:

Dạng 1: descendant: :Name

Dạng 2: Bank/Account/Name

Ý nghĩa của biếu thức đạng 1 là “ Hãy lấy những nút con của tất cả những

nút có tên là Name”, cồn dạng 2 được diễn đạt như sau “Lấy những nút Name

của nút Accourft củ nứt Bank”. Cả hai biểu thức này đều trả về cùng một tập hợp nút như nhau.

" Ví dụ 2: Chúng ta muốn lấy tất cả khách hàng từ Ohio (OH). Biểu thức

được viết như sau:

Dạng 1: descendant: :Account[child: :State=`OH“ ]

Dạng 2: Bank/Account[child: :State= `OH' ]

" Ví dụ 3: Lấy tất cả Account có Balance>5000.00

Dạng 1: descendant: :Account[child: :Balance> 5000] Dạng 2: Bank/Account[child: :Balance > 5000.00]

SVTH: Nguyễn Thị Kim Phượng GVHD: Th.S Nguyễn Trần Minh Thư

" Ví dụ 4: Giả sử Chúng ta muốn lấy thông tin của những Account mà có tên bắt đầu bằng ký tự “D”

Dạng 1: descendant: :account[starts-with (child: :Name, `D'“ ) ] Dạng 2: Bank/Account[starts-with (child: :Name, `D“ ) ]

Như vậy, sử dụng dạng nào là thích hợp. Điều đó phụ thuộc vào cảm giác của từng người và trên cấu trúc của tài liệu XML. Dạng 2 trông dễ sử dụng hơn dạng 1. Tuy nhiên, trong những tài liệu XML lồng quá sâu, thì dạng 1 sẽ đưa ra một biểu thức hiệu quả hơn.

Trên đây, chúng ta đã biết khái niệm về cách sử dựng biểu thức XPzh như thế nào, kế tiếp chúng ta sẽ đi vào sử dụng XPa#iDocumenf. Trong ngữ cảnh này, chúng ta sẽ đưa ra 2 ví dụ. Ví dụ đầu tiên sẽ lấy tắt:cả tên của khách hàng

từ Ohio và hiển thị lên listbox. Ví dụ thứ hai sẽ mỉnh hoạ cách tìm kiếm đữ

liệu thông qua XPa£hDocument.

2.2.3.2. Cách sử dụng XPathDocument và XPathNavigator

Đầu tiên, chúng ta lơáđ tài liệu XML sử dụng XPathDocument như sau:

XPathDocument doc = new

XPathDocument (Server .MapPath ("Bank2.xm1") ) ;

Chúng ta cần hai đối tượng: XPøfhNavigaror đề rút trích ra tập hợp nút mà chúng ta muốn lấy, và XPahNodelferator đề lặp thông qua tập hợp nút vừa lấy được. Khai báo như sau:

XPathNavigator myNav = new XPathNavigator(); myNav = myDoc.CreateNavigator();

XPathNodeTterator myIter = new XPathNodeTterator();

myTter=myNav.. Select ("Bank/Account [chi1d: : State='OH' ] /Name") ;

Biểu thức “Bank/Account[child::State=*OH°?]/Name” trả về những node tên Name từ tập nút Account có Sfae=°OH”. Để lẫy giá trị bên trong nút

SVTH: Nguyễn Thị Kim Phượng GVHD: Th.S Nguyễn Trần Minh Thư

Name, chúng ta sử dụng Current.Value của đối tượng Ierafor. Cụ thể như

sau:

while (myTter.MoveNext ())

{

1stName.. Ttems .Add (myTter.Current.Value) ;

2.2.3.3. Cách sử dụng XPathDocument và XPathNavigator cho việc định hướng tài liệu

Phần này minh họa cách tìm kiếm một XPáfhĐocument sử dụng giá trị của một thuộc tính và giá trị của một phần tử (element). Sử dụng tài liệu XML bank2.xmÏ sau: <Bank> <Account AccountNo="A1112"> <Name>Pepsi Beagle</Name> <Balance>1200.89</Balance> <State>OH</State> </Account> </Bank>

Để tìm kiếm giá trị cụ thể của một thuộc tính, chúng ta sử đụng biểu thức

như sau

Bank/Account[@AccountNo=' "+accNo+"'] /Balance

Một phần của tài liệu khóa luận tìm hiểu công nghệ xml và xây dựng hệ thống quản lý dịch vụ khách hàng (esupport) (Trang 38 - 43)

Tải bản đầy đủ (PDF)

(46 trang)