200 likes | 308 Vues
XML và Visual Basic.NET. 1- Đối tượng XmlDocument 2- Đối tượng XmlTextReader , XmlTextWriter. I- Đối tượng XmlDocument. 1) Chức năng. Phù hợp khi làm việc với tệp XML đã tồn tại Cho phép thực hiện các thao tác trên tệp XML như trên một table: Đọc dữ liệu Thêm một Node Xóa một Node
E N D
XML và Visual Basic.NET 1- Đối tượng XmlDocument 2- Đối tượng XmlTextReader, XmlTextWriter
I- Đối tượng XmlDocument 1) Chức năng • Phù hợp khi làm việc với tệp XML đã tồn tại • Cho phép thực hiện các thao tác trên tệp XML như trên một table: • Đọc dữ liệu • Thêm một Node • Xóa một Node • Cập nhật thuộc tính và giá trị một Node Lưu ý : Đối tượng XmlDocument nằm trong name space System.Xml Do vậy đầu chương trình cần import / using System.Xml(VB.NET hay C#)
2- Khai báo đối tượng XmlDocument * Khác với khai báo một biến kiểu dữ liệu đơn giản: Dim tênbiến As KiểuDữLiệu Ví dụ : Dim Str As String Dim Num as Integer Dim Arr(5) as String Nhận xét : VB và VB.NET có cách khai báo biến giống nhau, nhưng VBScript không khai báo kiểu dữ liệu. * Dim xmlDoc As new XmlDocument (Khai báo sử dụng tư liệu XML)
3- Đọc, Ghi một tư liệu XML a) Phương thức Load : đọc tệp XML Cú pháp : xmlDoc.Load(PathName_of_XML_file) Thông thường ta tạo thư mục DATA để lưu trữ các tệp XML trong một ứng dụng VB.NET Cú pháp trên được sử dụng: xmlDoc.Load(“../../DATA/book.xml”) b) Phương thức Save : Lưu tệp tin XML Cú pháp: xmlDoc.Save(PathName_of_XML_file) Xem AlterXML.VB
4- Truy xuất nút gốc của tư liệu XML a) Khai báo một nút, kể cả nút gốc Dim TênNút As XmlElement b) Truy xuất nút gốc của tư liệu XML Dim Root As XmlElement Set Root = xmlDoc.documentElement
5- Các thuộc tính quen thuộc... • FirstChild, LastChild • NextSibling, PreviousSibling • ParentNode Trong các ứng dụng thực tiển của VB ít khi sử dụng các thuộc tính trên. Lưu ý: các thuộc tính trên trả về một đối tượng (một Node)
6- Truy xuất các nút con a) Sử dụng phương thức SelectSingleNode ví dụ : Dim SV as XmlElement SV=xmlDoc.SelectSingleNode(“DCT/STUDENTS”) Nhận xét : - Sử dụng SelectSingleNode khi muốn truy cập một nút duy nhất trong tư liệu XML (nút nầy là duy nhất) - Cú pháp trên có thể sử dụng: SV=Root.SelectSingleNode(“STUDENTS”)
6- Truy xuất các nút con... b) Sử dụng tập hợp ChildNodes Cú pháp : NútCha.ChildNodes Ví dụ : truy cập đến các nút STUDENT xmlDoc.documentElement.ChildNodes (1) c) Sử dụng phương thức getElementsByTagName • Thay bằng : xmlDoc.getElementsByTagName(“STUDENT”) Dim List As XmlNodeList = xmlDoc.GetElementsByTagName("Book") Kết quả trả về mãng các đối tượng (là các node), ta thường dùng vòng lặp For Each ... In để duyệt qua các phần tử của mãng. For Each Nut As XmlElement In List ‘ Câu lệnh thao tác trên Nut như là một Object Next
7- Truy xuất nội dung của nút • Nhận nội dung của nút Giá_trị = Nút.InnerText • Cập nhật giá trị của nút: Nút.InnerText = Giá-Trị Nhận xét: không giống như VB và JavaScript, VB.NET không sử dụng thuộc tính nodeValue
9- Truy xuất thuộc tính của một nút • Nhận giá trị của thuộc tính Giá_trị =Nut.GetAttribute(“Tên_Thuộc_tính”) b) Cập nhật giá trị của thuộc tính Nut.SetAttribute(“Tên_Thuộc_tính”,”Giá_trị”)
10- Chèn nút mới - Dim newNode as XmlElement - newNode = xmlDoc.CreateElement(“Tên_Nút”) - newNode.InnerText=giá_trị - Nút_cha.AppendChild(Nút_con) Phương thức AppendChild chèn thêm một nút vào cuối cây XML Ngoài ra còn sử dụng phương thức InsertBefore, InsertAfter.
11. Phương thức InsertBefore, InsertAfter Cú pháp: • NútCha.InsertAfter(nút, nút_đứng_ trước) • NútCha.InsertBefore(nút, nút_đứng_ sau) Hãy nhận xét : Root=xmlDoc.documentElement Last=Root.LastChild NewNode=XmlElement.... (1) Root.AppendChild(NewNode) (2) Root.InsertAfter(NewNode,Last)
11- Chèn nút mới... Bổ sung thuộc tính cho nút đã tồn tại - Dim Prop As XmlAttribute - Prop= xmlDoc.CreateAttribute("Price") - Prop.Value = Rate - Nut.SetAttributeNode(Prop)
12. Xóa một nút • Cú pháp : NútCha.RemoveChild(NútCon) - Vấn đề là phải xác định xóa nút thỏa điều kiện nào? - và Nút cha của nó là nút nào?
13- Tổng kết Khai báo biến: Tư liệu XML : Dim xmlDoc as New XmlDocument Node : Dim Tên_Nút as XmlElement Truy cập các Nút : Nút gốc : xmlDoc.documentElement Các nút con : ChildNodes, getElementsByTagName XmlNodeList Một nút cụ thể : selectSingleNode Truy cập giá trị thuộc tính, giá trị của nút TênNut.innerText TênNut.GetAttribute(“Tên_Thuộc_Tính”)
13- Tổng kết .... • Tạo một nút mới Dim Nut as XmlElement Nut = xmlDoc.CreateElement(“Tên_Thẻ”) ‘ - gán trị ‘ Chèn vào cây XML: ‘- AppendChild, InsertAfter, InsertBefore ‘ - Save
13. Tổng kết ... Khai báo các biến chung Sub Tên_Thủ_Tục(Tham_số) 1-Khai báo các biến riêng 2- Mở tệp XML 3- Cập nhật :AppendChild, SetAttribute, InnerText, RemoveChild Duyệt dữ liệu, Tìm kiếm,... 4- [Lưu tệp XML, nếu đã cập nhật dữ liệu XML] End Sub
II. Đối tượng XmlTextWriter và XmlTextReadder III. Đối tượng XmlWriter và XmlReadder - Hai phần này sẽ upload sau - Một chủ đề vốn là thế mạnh của Java là Xquery cũng sẽ được test trong môi trường .NET framework và upload sau.