Dùng DOM để display XML thành nhiều tầng trong TreeView

pdf 19 trang ngocly 1740
Bạn đang xem tài liệu "Dùng DOM để display XML thành nhiều tầng trong TreeView", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfdung_dom_de_display_xml_thanh_nhieu_tang_trong_treeview.pdf

Nội dung text: Dùng DOM để display XML thành nhiều tầng trong TreeView

  1. Dùng DOM để display XML thành nhiều tầng trong TreeView I nternet Explorer 5.0 cho ta Document Object Model (DOM) ActiveX goị là MSXML.DLL mà ta có thể dùng trong VB6. Đâù tiên là Microsoft XML, version 2.0, tiếp theo đó là Microsoft XML, v2.6 và mới nhất là Microsoft XML, v3.0. Cả ba DLL nâỳ đều có trong danh sách các References mà ta có thể include khi dùng IDE Menu command Project | References. Khi ta Load môṭ XML file vào DOM, nó tư ̣ đôṇ g parse XML data để build môṭ Tree gồm nhiều nodes với thứ bâc̣ cha,
  2. con bên trong. Dưạ theo đó ta có thể display cái DOM Tree ấy trong môṭ TreeView để có thể hiǹ h dung đươc̣ cấu trúc của XML data. Trong thí du ̣ dưới đây, ta Load môṭ XML file tên Library.xml vào DOM. XML file nâỳ còn có môṭ Schema file tên LibrarySchema.xml. Khi DOM load XML file, ta có thể dăṇ nó kiểm (validate) xem XML data có theo đúng tiêu chuẩn đòi hỏi trong Schema file. Content của Library.xml như sau, lưu ý hàng thứ 7 nhắc đến LibrarySchema.xml mà DOM sẽ dùng để validate data trong XML file: <! Copyright 2000 Wattle Software
  3. Northmead Local Library C++ Programming for Beginners Claude Schwartz 005.133/C XML Users Journal August 1999 1999-08-01 005.133/C Titanic James Cameron 643.11/T
  4. The C Programming Language Brian Kernighan Dennis Ritchie 005.133/C2 Content của LibrarySchema.xml như sau: <! Copyright 2000 Wattle Software
  5. This Schema is based on XML- Schema support found in Microsoft Internet Explorer 5. >
  6. Viêc̣ đâù tiên khi chaỵ program là baṇ click nút Load XML and Display in TreeView. Đơị môṭ chút xíu, Tree của XML sẽ hiêṇ ra trong TreeView. Đồng thời Content của XML file cũng đươc̣ loaded vào ListBox lstXMLSource và baṇ sẽ thấy nó nếu baṇ click Tab XML Source. Di ̃ nhiên baṇ có thể display bất cứ môṭ XML file nào nếu baṇ để nó vào folder của program và enter Filename của
  7. nó vào TextBox txtXMLFileName trứ ớc khi click nút Load XML and Display in TreeView.
  8. Trong program nâỳ ta dùng Object IXMLDOMNode, thay vi ̀ Object IXMLDOMElement để lâǹ lươṭ đi qua moị nodes của XML DOM. Program goị Sub AddNode để bỏ các Nodes vào TreeView. Đăc̣ biêṭ là AddNode goị chính nó ở bên trong Sub AddNode. Kỹ thuâṭ nâỳ goị là recursive, mà ta thường lấy dùng trong những cấu trúc giống như nhánh cây, khi chính môṭ Con laị có nhiều Con khác. Listing của Sub AddNode như sau: Private Sub AddNode(ByRef oElem As IXMLDOMNode, Optional ByRef oTreeNode As Node) ' Add a Node to the TreeView Dim oNewNode As Node Dim oNodeList As IXMLDOMNodeList Dim i As Long ' Create the new node
  9. If oTreeNode Is Nothing Then ' Go through here when creating the top level nodes, i.e. childNodes of root node Set oNewNode = TreeView.Nodes.Add Else Set oNewNode = TreeView.Nodes.Add(oTreeNode, tvwChild) End If ' Expand TreeView node oNewNode.Expanded = True ' Prepare the Text for the TreeView Node If oElem.nodeType = NODE_ELEMENT Then ' Element Node type. Use Node name and Attribute values oNewNode.Text = BuildNodeLabel(oElem) ElseIf (oElem.nodeType = NODE_TEXT) Then ' Last Node in the branch. Use Text oNewNode.Text = oElem.Text ElseIf (oElem.nodeType = NODE_COMMENT) Then ' Comment Node. Display the comment oNewNode.Text = "Comment:" & oElem.Text Else ' Display Nodename as default
  10. oNewNode.Text = oElem.nodeName End If ' process the childNodes which form a NodeList Set oNodeList = oElem.childNodes ' Iterate through each childNode For i = 0 To oNodeList.length - 1 ' Recursively call AddNode to add more nodes as children of oNewNode, ' treating AddNode just like another Sub AddNode oNodeList.Item(i), oNewNode Next End Sub Có ba loaị Nodes ta xử lý ở đây: NODE_ELEMENT, NODE_TEXT và NODE_COMMENT. Element Node thi ̀ có Node , Attributes và Con. Text Node và Comment Node thi ̀ chỉ có text. Baṇ có thể download chương triǹ h mâũ XMLTreeDOM.zip để chaỵ thử .
  11. Để biết thêm các Properties và Methods của các Classes trong MSXML, từ trong VB6 IDE baṇ press F2 để display Object Browser. Khi Object Browser Dialog hiêṇ ra, choṇ MSXML2 từ ComboBox phía trên đang display , kế đó choṇ môṭ class, thí du ̣ như IXMLDOMNode từ ListBox bên trái, chi tiết của selected Class sẽ đươc̣ displayed trong ListBox bên phải như trong hiǹ h dưới đây:
  12. Kỹ thuâṭ XML Vovisoft © 2000. All rights reserved. Last Updated: 10 July 2001 Webmaster