intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Thao tác XML - Sử dụng DOM trong .NET – Phần 1

Chia sẻ: Nguyen Uyen | Ngày: | Loại File: PDF | Số trang:8

127
lượt xem
29
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Document Object Model (DOM) thực thi trong .NET hỗ trợ các kĩ thuật W3C DOM Level 1 và Core DOM Level 2. DOM được thực thi thông qua lớp XmlNode, một lớp ảo mô tả một nút của tài liệu. Ngoài ra còn có một lớp XmlNodeList là một danh sách có thứ tự các nút. Đây là một danh sách sống, và bất kì thay đổi nào cũng sẽ cập nhật ngay vào danh sách. XmlNodeList hỗ trợ truy cập chỉ mục và truy cập lặp. Còn có một lớp ảo khác, XmlCharacterData, nó là lớp mở rộng...

Chủ đề:
Lưu

Nội dung Text: Thao tác XML - Sử dụng DOM trong .NET – Phần 1

  1. Thao tác XML Sử dụng DOM trong .NET – Phần 1 Document Object Model (DOM) thực thi trong .NET hỗ trợ các kĩ thuật W3C DOM Level 1 và Core DOM Level 2. DOM được thực thi thông qua lớp XmlNode, một lớp ảo mô tả một nút của tài liệu. Ngoài ra còn có một lớp XmlNodeList là một danh sách có thứ tự các nút. Đây là một danh sách sống, và bất kì thay đổi nào cũng sẽ cập nhật ngay vào danh sách. XmlNodeList hỗ trợ truy cập chỉ mục và truy cập lặp. Còn có một lớp ảo khác, XmlCharacterData, nó là lớp mở rộng của XmlLinkedNode, và cung cấp các phương thức sử dụng văn bản cho các lớp khác. Các lớp XmlNode và XmlNodeList trang điểm cho thực thi DOM trong .NET Framework. Đây là một danh sách các lớp cơ sở trong XmlNode:
  2. Class Name Description Trả về nút trước và sau nút hiện tại. Thêm các XmlLinkedNode thuộc tính NextSibling và PreviousSibling vào XmlNode. Miêu tả toàn bộ tài liệu. Thực thi các đặc điểm kĩ XmlDocument thuật DOM Level 1 và Level 2. XmlDocumentFragment Miêu tả mô hình cây thư mục của tài liệu. Một đối tượng thuộc tính của một đối tượng XmlAttribute XmlElement. Phân tách và tổ hợp các nút. XmlEntity Chứa cách chú thích trong môt DTD hoặc sơ đồ. XmlNotation Các lớp sau mở rộng XmlCharacterData:
  3. Class Name Description Một đối tượng mô tả một đoạn CData section XmlCDataSection của một tài liệu. Mô tả một đối tượng ghi chú XML. XmlComment XmlSignificantWhitespace Mô tả một nút với khoảng trắng. Các nút chỉ được tạo khi cờ PreserveWhiteSpace là true. Miêu tả whitespace trong một thành phần ghi XmlWhitespace chú. Các nút được tạo chỉ khi cờ PreserveWhiteSpace là true. Ghi chú dạng văn bản cảu một thành phần hoặc XmlText thuộc tính. Cuối cùng, tập các lớp tiếp theo mở rộng lớp XmlLinkedNode:
  4. Class Name Description Miêu tả nút khai báo () XmlDeclaration Quan hệ dữ liệu với khai báo kiểu tài liệu XmlDocumentType Một đối tượng thành phần XML XmlElement XmlEntityReferenceNode Mô tả một nút tham chiếu tồn tại XmlProcessingInstruction Chứa một cấu trúc xử lí XML Như bạn thấy, .NET tạo sẽ một lớp phù hợp với bất kì kiểu XML nào mà bạn bắt gặp. Bởi vậy, bạn sẵn có một bộ các công cụ mạnh mẽ và mềm dẻo. Chúng ta sẽ không đi vào chi tiết các lớp, nhưng chúng ta sẽ dùng một số ví dụ. Sau đây là sơ đồ các lớp: Sử dụng lớp XmlDocument XmlDocument và lớp xuất phát XmlDataDocument (chúng ta sẽ xem xét sau trong chương) là các lớp bạn sẽ dùng để miêu tả DOM trong .NET. Không giống như XmlReader và X mlWriter, XmlDocument cho cung cấp cho bạn
  5. khả năng đọc và viết như truy xuất ngẫu nhiên cây DOM . XmlDocument tương tự như thực thi DOM trong MSXML. Nếu bạn đã từng lập trình với MSXML bạn sẽ cảm thấy tiện lợi khi dùng XmlDocument. Lấy một ví dụ về tạo một đối tượng X mlDocument, load một tài liệu từ đĩa, và load các tiêu đề vào một listbox. Nó giống như mọt ví dự mà chúng ta đã tạo trong phần XmlReader. Cái khác ở đây là chúng ta sẽ chọn các nút mà chúng ta sẽ làm việc thay vì duyệt qua các nút trong tài liệu như đã từng làm. Đây là mã. Hãy xem cách làm việc của nó và so sánh với ví dụ XmlReader (file có thể tìm thấy trong thư mục DOMSample1): private void button1_Click(object sender, System.EventArgs e) { // doc is declared at the module level // change path to match your path structure doc.Load("..\\..\\..\\books.xml"); // get only the nodes that we want XmlNodeList nodeLst=doc.GetElementsByTagName("title");
  6. // iterate through the XmlNodeList foreach(XmlNode node in nodeLst) listBox1.Items.Add(node.InnerText); } Chú ý rằng chúng ta cũng có thể thêm khai báo sau vào mô module này: private XmlDocument doc=new XmlDocument(); Nếu chúng ta chỉ muốn làm như vậy thì dùng XmlReader sẽ tốt hơn vì chỉ cần duyệt qua tài liệu một lần duy nhất để load dữ liệu cho the listbox. XmlReader được thiết kế cho mục đích này. Nếu bạn muốn tham chiếu lại một nút, thì dùng XmlDocument là cách tốt nhất. Mở rộng ví dụ trên bằng cách thêm một quản lí sự kiện khác (đây là DOMSample2): private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) { //create XPath search string string srch="bookstore/book[title='" + listBox1.SelectedItem.ToString() + "']";
  7. //look for the extra data XmlNode foundNode = doc.SelectSingleNode(srch); if(foundNode != null) MessageBox.Show(foundNode.InnerText); else MessageBox.Show("Not found"); } Trong ví dụ này, chúng ta load các tựa trong tài liệu books.xml vào listbox, giống như trong ví dụ trên. Khi chúng ta click vào listbox, khi đó sự kiện SelectedIndexChanged() được phát ra. Trong trường hợp này, chúng ta tạo mọt văn bản của đối tượng được tạo trong listbox (tựa của sách) tạo một XPath statement và truyền nó cho phương phương thức SelectSingleNode() của đối tượng doc. Nó trả về sách có tựa được tìm thấy. Sau đó chúng ta biểu diễn InnerText của nút trong một message box. Chúng ta có thể giữ clicking trên mục chọn trong listbox, tài liệu đã được load lên sẽ không thay đổi cho đến khi chúng ta thả tay ra.
  8. Một ghi chú nhanh có liên quan đến phương thức SelectSingleNode(). Đó là thực thi XPath trong lớp XmlDocument. Có hai phương thức SelectSingleNode() và SelectNodes(). Cả hai phương thức này đều được định nghĩa trong X mlNode, là lớp xuất phát của XmlDocument. SelectSingleNode() trả về một X mlNode và SelectNodes() trả về một XmlNodeList. Tất nhiên, không gian System.Xml.XPath chứa một thực thi XPath mạnh, và sẽ xem xét trong chương sau.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2