Tải bản đầy đủ (.pdf) (4 trang)

Thao tác trên XML part 3

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (122.73 KB, 4 trang )


Sử dụng MSXML trong .NET
Sẽ ra sao nếu bạn có một tấn mã đã được phát triển bằng những phiên bản cổ xưa nhất
của Microsoft (Hiện tại là MSXML 4.0)? Bạn có phải bỏ đi tất cả khi chuyển qua dùng
.NET? Trong khi đó có gì tốt hơn khi sử dụng MSXML 4.0 DOM? Có nên chuyển sang
.NET ngay lập tức?
Câu trả lời là không. XML 4.0, 3.0 hoặc 2.0 có thể dùng trực tiếp trong các ứng dụng của
bạn. Trước tiên bạn thêm mộ
t tham chiếu đến msxml4. DLL trong giải pháp của bạn, bạn
có thể bắt đầu viết một vài mã.
Một vài ví dụ tiếp theo sẽ dùng books.xml như là nguồn dữ liệu. File này có thể
download từ web site Wrox ( />), nó cũng bao gồm các ví dụ khác
trong .NET SDK. File books.xml
là một thư viện sách ảo. Nó bao gồm thông tin về sách
như thể loại, tên tác giả, giá và số ISBN. Tất cả mã ví dụ trong chương này đều sẵn có
trong web site Wrox. Trong thứ tự thực thi các ví dụ, các file dữ liệu XML sẽ cần phải
nằm trong cây thư mục như sau:
/XMLChapter/Sample1
/XMLChapter/Sample2
/XMLChapter/Sample3
...
Thật vậy, bạn có thẻ gọi trực tiếp bất kì thứ gì bạn muốn, nhưng vị trí tương đối đóng mộ
t
vai trò quan trọng. Bạn cũng có thể sửa đổi các ví dụ ở bất kì điểm nào bạn muốn. Mã ví
dụ sẽ được giải thích để chỉ những dòng nào thay đổi nếu bạn muốn như vậy.
File books.xml
trong như thế này:
<?xml version='1.0'?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore>
<book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">


<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
Nào hãy xem một vài mã dùng MSXML 4.0 để tải một listbox với các ISBN từ
books.xml. Bạn sẽ tìm thấy mã đầy đủ trong thư mục MSXML_Sample
. Bạn có thể sao
chép nó vào Visual Studio IDE hoặc tạo một Windows Form mới. Form này chứa một
listbox và một button, như bạn thấy dưới đây. Cả hai đều dùng tên mặc định listBox1 và
button1, với thuộc tính Text của button1 là Load XML.


Một điều lưu ý là từ khi MSXML 4 trở thành một thành phần COM-based, chúng ta sẽ
cần phải tạo ra interop assembly. Cách dễ nhất là chọn Add Reference từ trình đơn
Project trong Visual Studio IDE. Đến tab COM và chọn Microsoft XML, v4.0 (or v3.0,
v2.6). Bạn sẽ thấy MSXML2 như một không gian tên được thêm vào Solution Explorer.
Tại sao lại là MSXML2? Khi bạn nhập một thành phần COM không gian tên được truyền
cho một assembly mới, là tên thư viện kiểu cho thành phần COM đó. Trong trường hợp
này nó là MSXML2. Nếu bạn dùng TLBIMP bạn có thể đổi không gian tên thành một cái
tên khác mà bạn muốn.
Nào bây giờ hày xem các dòng quan trọng từ mã ví dụ MSXML.
Chúng ta có một tham chiếu khi thêm dòng:
using MSXML2;
Chúng ta cũng có một biến cấp lớp.
private DOMDocument40 doc;
Bây giờ chúng ta đã sẵn sàng để dùng MSXML trong ví dụ của chúng ta.
Chúng ta muốn tạo một ISBN từ listbox, và sử dụng một tìm kiếm XPath đơn giản, tìm
mục sách nếu tìm thấy thì biếu diễn mục sách dưới dạng text (tựa sách và giá sách) trong
một MessageBox. XML Path Language (XPath) là một ghi chú XML được dùng cho truy
vấn và lọc văn bản trong một tài liệu XML. Chúng ta sẽ tìm hiểu kĩ cách dùng XPath
trong .NET sau.
Đây là một mã quản sự kiện cho việc chọn một mẫu từ
listbox:
protected void listBox1_SelectedIndexChanged (
object sender, System.EventArgs e)
{
string srch=listBox1.SelectedItem.ToString();
IXMLDOMNode nd=doc.selectSingleNode(
"bookstore/book[@ISBN='" + srch + "']");
MessageBox.Show(nd.text);
}
Giờ đây chúng ta sẽ xem xét sự kiện click của button. Trước tiên, chúng ta load file

books.xml - chú ý rằng nếu bạn đang chạy ứng dụng từ thư mục bin/debug hay
bin/release, bạn sẽ cần phải điều chỉnh đường dẫn thích hợp.
protected void button1_Click (object sender, System.EventArgs e)
{
doc=new DOMDocument40 ();
doc.load("..\\..\\..\\books.xml");
Dòng tiếp theo khai báo một NodeList của các mục sách. Trong trường hợp này có ba
mục sách:
IXMLDOMNodeList nodes;
nodes = doc.selectNodes("bookstore/book");
IXMLDOMNode node=nodes.nextNode();
Sau đó chúng ta lặp qua các mục, và thêm giá trị văn bản của thuộc tính ISBN vào
listBox1:
while(node!=null)
{
listBox1.Items.Add(node.attributes.getNamedItem("ISBN").text);
node=nodes.nextNode ();
}
}
Hình bên trái là kết quả khi chạy ví dụ. Sau khi click button, listbox tải các book ISBN.
Sau khi chọn một mục sách hình bên phải sẽ xuất hiện.




Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×