1. Trang chủ
  2. » Công Nghệ Thông Tin

Thao tác trên XML part 3

4 263 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Sử dụng MSXML trong .NET
Trường học University of Information Technology
Chuyên ngành Computer Science
Thể loại Bài viết
Năm xuất bản 2025
Thành phố Ho Chi Minh City
Định dạng
Số trang 4
Dung lượng 122,73 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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?. DLL trong giải pháp của bạn, bạn có thể

Trang 1

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ể

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

<?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>

Trang 2

<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ừ

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

Trang 3

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();

Trang 4

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

Ngày đăng: 07/11/2013, 19:15

TỪ KHÓA LIÊN QUAN