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

9 296 0
Thao tác XML - Sử dụng DOM trong .NET – Phần 2 ppt

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

Thông tin tài liệu

Thao tác XML Sử dụng DOM trong .NET – Phần 2 Inserting Nodes Như chúng ta đã biết trong một ví dụ sử dụng XmlTextWriter trước đây tạo một tài liệu mới. Giới hạn là nó không thể chèn một mục mới vào tài liệu hiện tại. Với lớp XmlDocument chúng ta có thể làm điều đó. Thay đổi trình quản lí sự kiện button1_Click() trong ví dụ trên như sau (DOMSample3 trong mã download): private void button1_Click(object sender, System.EventArgs e) { //change path to match your structure doc.Load(" \\ \\ \\books.xml"); //create a new 'book' element XmlElement newBook=doc.CreateElement("book"); //set some attributes newBook.SetAttribute("genre","Mystery"); newBook.SetAttribute("publicationdate","2001"); newBook.SetAttribute("ISBN","123456789"); //create a new 'title' element XmlElement newTitle=doc.CreateElement("title"); newTitle.InnerText="The Case of the Missing Cookie"; newBook.AppendChild(newTitle); //create new author element XmlElement newAuthor=doc.CreateElement("author"); newBook.AppendChild(newAuthor); //create new name element XmlElement newName=doc.CreateElement("name"); newName.InnerText="C. Monster"; newAuthor.AppendChild(newName); //create new price element XmlElement newPrice=doc.CreateElement("price"); newPrice.InnerText="9.95"; newBook.AppendChild(newPrice); //add to the current document doc.DocumentElement.AppendChild(newBook); //write out the doc to disk XmlTextWriter tr=new XmlTextWriter(" \\ \\ \\booksEdit.xml",null); tr.Formatting=Formatting.Indented; doc.WriteContentTo(tr); tr.Close(); //load listBox1 with all of the titles, including new one XmlNodeList nodeLst=doc.GetElementsByTagName("title"); foreach(XmlNode node in nodeLst) listBox1.Items.Add(node.InnerText); } Sau khi thực thi mã này, bạn sẽ có như khả năng như ví dụ trên, nhưng ở đây đã thêm một sách mới vào listbox, The Case of the Missing Cookie. Clicking trên tựa bạn sẽ chỉ ra tất cả các thông tin của các tựa khác. Đầu tiên chúng ta tạo một thành phần sách mới: XmlElement newBook = doc.CreateElement("book"); Phương thức CreateElement() có ba quá tải cho phép bạn lựa chọn:  element name  name và không gian tên URI  prefix, localname, and namespace Khi một thành phần được tạo ra chúng ta cần phải thêm các thuộc tính sau: newBook.SetAttribute("genre","Mystery"); newBook.SetAttribute("publicationdate","2001"); newBook.SetAttribute("ISBN","123456789"); Bây giờ chúng ta có các thuộc tính được tạo chúng ta cần thêm các thuộc tính khác của một cuốn sách: XmlElement newTitle = doc.CreateElement("title"); newTitle.InnerText = "The Case of the Missing Cookie"; newBook.AppendChild(newTitle); Trước tiên chúng ta tạo một đối tượng mới xuất phát từ XmlElement. Sau đó chúng ta gán thuộc tính InnerText của tựa sách như đã làm, và thêm vào như một thành phần con của book. Chúng ta lặp lại cho đên khi hết các thành phần. Chú ý răng chúng ta thêm thành phần name như một thành phần con của author. Nó cho chúng ta mối quan hệ thích hợp với các thành phần book khác. Cuối cùng, chúng ta gán thành phần newBook vào mục doc.DocumentElement. Nó cùng cấp với tất cả các thành phần book khác. Bây giờ chúng ta cập nhật một tài liệu có sẵn với một thành phần mới. Thao tác cuối cùng là ghi tài liệu mới lên đĩa. Trong ví dụ này chúng ta tạo một XmlTextWriter mới, và truyền nó cho phương thức WriteContentTo(). WriteContentTo() và WriteTo() cả hai đều tạo ra mọt XmlTextWriter như là một tham số. WriteContentTo() lưu nút hiện tại và tất cảc các nút con của nó vào XmlTextWriter, ngược lại WriteTo() chỉ lưu nút hiện tại. Bởi vì doc là một đối tượng xuất phát từ XmlDocument, nó mô tả toàn bộ tài liệu và nhưng gì nó đã lưu. Chúng ta cũng sử dụng phương thức Save(). Nó sẽ luôn lưu toàn bộ tài liệu. Save() có bốn quá tải. Bạn có thể chỉ ra một chuỗi với tên file và đường dẫn, một đối tượng xuất phát từ Stream, một đối tượng xuất phát từ TextWriter, một đối tượng xuất phát từ XmlWriter. Chúng ta cũng gọi phương thức Close() trên XmlTextWriter để đẩy vào vùng nhớ đệm nội và đóng file. Đây là những gì chúng ta sẽ cho khi chạy ví dụ này. Chú ý rằng mục đầu tiên nằm ở đáy của danh sách: Nếu muốn tạo một tài liệu từ chúng, chúng ta có thể dùng XmlTextWriter như đã thấy trong phần trên. Chúng ta cũng có thể dùng XmlDocument. Tại sao dùng một trong số chúng? Nếu bạn muốn chuyển dữ liệu thành XML là sẵn có và sẵn sàng để ghi, trong trường hợp này lớp XmlTextWriter là lựa chọn tốt nhất. Và khi bạn cần tạo tài liệu XML từng chút một, và chèn các nút vào những vị trí khác nhau, sau đó tạo tài liệu khi đó lớp XmlDocument có thể là lựa chọn tốt nhất. Chúng ta có thể hoàn tất nó bằng thay đổi dòng sau: doc.Load(" \\ \\ \\books.xml"); thành (mã này nằm trong ví dụ DOMSample4): //create the declaration section XmlDeclaration newDec = doc.CreateXmlDeclaration("1.0",null,null); doc.AppendChild(newDec); //create the new root element XmlElement newRoot = doc.CreateElement("newBookstore"); doc.AppendChild(newRoot); Trước tiên, chúng ta tạo một XmlDeclaration mới. Các tham số là phiên bản (hiện tại là 1.0), mã hóa, và cờ standalone. Tham số mã hoá có thể được gán bởi một chuỗi là thành phần của lớp System.Text.Encoding nếu null không được dùng . null mặc định là UTF-8. Cờ standalone có thể là yes, no, hoặc null. Nếu nó là null thì thuộc tính không được dùng và sẽ không được mô tả trong tài liệu. Bước kế tiếp tạo ra DocumentElement. Trong trường hợp này chúng ta gọi newBookstore vì vậy bạn có thể nhận thấy khác biệt. Mục đích của mã giống như ví dụ trước, và hoạt động theo cùng một cách. Đây là booksEdit.xml được tạo ra từ mã: <?xml version="1.0"?> <newBookstore> <book genre="Mystery" publicationdate="2001" ISBN="123456789"> <title>The Case of the Missing Cookie</title> <author> <name>C. Monster</name> </author> <price>9.95</price> </book> </newBookstore> Chúng ta sẽ không xem xét kĩ lớp XmlDocument, cũng như các lớp khác giúp tạo mô hình DOM trong .NET. Tuy nhiên, chúng ta đã xem xét khả năng và tính mềm dẻo mà thực thi DOM trong .NET hỗ trợ. Bạn sẽ muốn sử dụng lớp XmlDocument khi bạn muốn truy xuất ngẫu nhiên đến tài liệu, hoặc các lớp xuất phát từ XmlReader khi bạn muốn một mô hình kiểu stream thay thế. Nhớ rằng cái giá phải trả cho tính mềm dẻo của XmlNode- based XmlDocument đó là bộ nhớ yêu cầu cao và việc đọc tài liệu không tốt bằng XmlReader. Vì vậy hãy suy nghĩ kĩ phương thức trước khi chọn. . Thao tác XML Sử dụng DOM trong .NET – Phần 2 Inserting Nodes Như chúng ta đã biết trong một ví dụ sử dụng XmlTextWriter trước đây tạo một tài liệu. lớp XmlDocument, cũng như các lớp khác giúp tạo mô hình DOM trong .NET. Tuy nhiên, chúng ta đã xem xét khả năng và tính mềm dẻo mà thực thi DOM trong .NET hỗ trợ. Bạn sẽ muốn sử dụng lớp XmlDocument. dùng XmlTextWriter như đã thấy trong phần trên. Chúng ta cũng có thể dùng XmlDocument. Tại sao dùng một trong số chúng? Nếu bạn muốn chuyển dữ liệu thành XML là sẵn có và sẵn sàng để ghi, trong

Ngày đăng: 30/07/2014, 18:20

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan