Thứ bảy, ngày 3 tháng 12 năm 2016

Tìm hiểu XML phần 1

Ngày đăng: 2/1/2011, 10:33:43AM | Lượt xem: 5,042
Hot!

Sau đây là loạt bài về tìm hiểu XML. Một kiểu lưu trữ dữ liệu đơn giản nhưng khá tiện lợi. Tuy nhiên tính bảo mật của nó không cao.

A.XML là gì?
 
a.Khái niệm
XML  (viết  tắt  từ  tiếng Anh Extensible Markup Language, "Ngôn ngữ Đánh dấu Mở  rộng")  là ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị, để tạo ra các ngôn ngữ đánh dấu khác. Đây  là một tập con đơn giản của SGML, có khả năng mô  tả nhiều  loại dữ  liệu khác nhau. Mục
đích chính của XML là đơn giản hóa việc chia sẻ dữ liệu giữa các hệ thống khác nhau, đặc biệt là các  hệ  thống  được  kết  nối  với  Internet.  Các  ngôn  ngữ  dựa  trên  XML  (thí  dụ:  RDF,  RSS, MathML, XHTML,  SVG,  và  cXML)  được  định  nghĩa  theo  cách  thông  thường,  cho  phép  các
chương trình sửa đổi và kiểm tra hợp lệ bằng các ngôn ngữ này mà không cần có hiểu biết trước về hình thức của chúng
b.Lợi ích khi sử dụng XML:
 - XML là một ngôn ngữ mạnh, linh hoạt và có thể mở rộng được ,dùng làm công cụ để đọc, ghi và có thể chuyển đổi dữ liệu giữa XML và các định dạng khác
 - Tách biệt được dữ liệu và hình thức của dữ liệu, cung cấp thông tin có ý nghĩa, Cho phép tái sử dụng dữ liệu
Chính vì đó mà XML có vai  trò rất quan  trọng  trong việc  truyền  tải và  trao đổi dữ  liệu  liên  lạc giữa các ứng dụng và các hệ điều hành khác nhau,.Ngay cả Microsoft, Sun, IBM, Oracles,... đều hỗ trợ XML và dùng nó trong mọi ứng dụng
 
B. XML in C#
 
1.Các kiến thức về DOM (Document Object Model)
1.1.Khái niệm:

DOM  là được xem như   là 1 bộ API (Application Programming Interface) dùng để thao tác  tài liệu XML.Phần này chúng ta sẽ tìm hiểu sơ lược các kiến thức sau:
-  System.Xml namespace classes liên quan đến DOM
-  Những điều cần biết khi sử dụng  DOM
-   Đọc một file XML sử dụng  DOM
-   Viết một file XML sử dụng DOM
Trung  tâm  thao  tác  tài  liệu  XML  của  DOM  trên  .NET  được  thể  hiện  qua  một  class  là: XmlDocument,nó  tải  các  tài  liệu XML  và  xây  dựng  cây  đại  diện  (bao  gồm  các  yếu  tố,thuộc tính,nhận xét..) trong bộ nhớ
 
Ví dụ: Thể hiện các thành phần cơ bản của tài liệu XML
<customers>

  <customer CustomerID="C001">
      <name>Acme Inc.</name>
      <phone>12345</phone>
      <comments>Regular customer since 1995</comments>
   </customer>
<customer CustomerID="C002">
      <name>Star Wars Inc.</name>
      <phone>23456</phone>
      <comments>A small but healthy company.</comments>
   </customer>
</customers>
 
Ý nghĩa các Tag
Customers(Nútgốc)-----------------loại Document element
Customer(phần tử)------------------loại Element
CustomerID(thuộc tính)-----------loại Attribute
Name(nút con)----------------------loại Nodes
Phone(nút con)---------------------loại Nodes
Comments(nút con)----------------loại Nodes.
 
Tưng ứng với với từng loại mà ta có các class đại diện,cụ thể như sau
Document element------------------------XmlElement
Element-------------------------------------XmlElement
Attribute------------------------------------XmlAttribute
Text values---------------------------------XmlText
Nodes---------------------------------------XmlNode
 
Dom cho phép bạn đọc và ghi tài liệu XML vì vậy khi sử dụng tính chất này cần chắc chắn rằng mình  thực sự muốn  thế,DOM cho  tải  toàn bộ dữ  liệu vào bộ nhớ,và về cơ bản bộ nhớ cơ bản DOM rất  lớn,DOM cho phép  truy cập đến các nút ngẫu nhiên,điều này hoàn  toàn có  thể bởi vì
dữ liệu XML lúc này được thể hiện như là 1 cây đã  có sẵn trong bộ nhớ.
 
Ví dụ: Mở một file XML đã có sẵn.( File database.xml phải nằm ở D:\database.xml bạn có thể tải file đính kèm này dưới topic vào bỏ vào D: cho đúng đường dẫn – chạy trên console)
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Xml;
using System.IO

namespace XML
{
    class Program
    {
        static void Main(string[] args)
        {
            string Path = @"D:\database.xml";
            //Trinh bay 3 phuong phap Open du lieu XML
            try
            {
                Console.WriteLine("Menu cac cach nap XML\n");
                Console.WriteLine("URL:\t\t1");
                Console.WriteLine("System Path:\t2");
                Console.WriteLine("XML data:\t3");
                Console.WriteLine("Nhap vao su lua chon cua ban");
                int a =Convert.ToInt16(Console.ReadLine());
                XmlDocument doc = new XmlDocument();
                if (a == 1)
                {
                   doc.Load(Path);
                }
                else if (a == 2)
                {
                    FileStream str = new FileStream(Path, FileMode.Open);
                    doc.Load(str);
                    str.Close();
                }
                else
                {
                   doc.LoadXml("<NewDataSet></NewDataSet>");
//Neu muon lay theo nhung doan tag tuy y ta co the lam         
//doc.LoadXml("<Employees><city>London</city></Employees>")
                }
                Console.WriteLine("Open XML sucess");
 
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error:" + ex);
            }
            
            Console.ReadLine();
 
        }
    }
}
Lưu ý:
Nhìn vào ví dụ trên ta thấy nếu muốn mở XML thôi thì ta có 3 cách,đó là open tử một URL,open từ  System  Path,hoặc  là  open  từ  nguyên  dữ  liệu  XML,tránh  nhần  lần  khi  sử  dụng  Load  và LoadXml(thằng này can thiệp sâu vào file XML của mình,tức là có khả năng lấy theo những tab tùy ý).Như vậy tùy theo mục đích mà ta lựa chọn cách mở XML khác nhau sao cho phù hợp.
 
1.2 Duyệt qua một tài liệu XML

Một tài  liệu XML bao gồm một hoặc nhiều nodes, và nodes có thể được  lồng vào bên trong các nodes khác. XmlNode class được xây dựng để quản các các Node, XmlNode class có các  tinh chất như ParentNode, FirstChild, LastChild, NextSibling, và PreviousSibling cho phép bạn  tuy biến cao đến các node.Chẳng hạn ví dụ như: ParentNode cho phép bạn  truy cập vào Node cha của  các  node  hiện  tại,  NextSibling  cho  phép  bạn  truy  cập  đến  Node  kế  tiếp  của  Node  hiện tại….Để hiểu thêm hết các chức năng này ta có thể xây dựng ứng dụng hiển thị Employees.xml lên TreeView
Ví  dụ  minh  họa:  (Chương  trình  xây  dựng  trên  Window  Applycation  Tải  file  đính  kèm Employees.xml và XmlTreeview.zip bên dưới cho tiện theo dõi)
 
(Nếu bạn không muốn tải file Empoyees.Xml đính kèm theo,bạn có thể làm như sau để có thể tạo
bất kỳ file xml nào mà mình muốn.)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Xml;
using System.IO;
 
namespace XML
{
    class Program
    {
        static void Main(string[] args)
        {   
            string connectString =
@"server=.\SQL2005;database=Northwind;integrated security=true";
            string sql = "SELECT * FROM Employees";
            SqlConnection conn = new SqlConnection(connectString);
            try
            {
                conn.Open();
                SqlDataAdapter da = new SqlDataAdapter(sql, conn);
                SqlCommandBuilder cb = new SqlCommandBuilder(da);
                DataSet ds = new DataSet();
                da.Fill(ds,"Employees");
                //qua trinh xuat ra XML
                ds.WriteXml(@"D:\Employees.xml");
                //hoac co the su dung cach sau
                //XmlDataDocument xmdoc = new XmlDataDocument(ds);
                //xmdoc.Save(@"D:\Employees.xml");
               
            }
            catch (SqlException ex)
            {
                Console.WriteLine("Error:" + ex);
            }
            finally
            {
                conn.Close();

                Console.WriteLine("Ghi XML thanh cong");
            }
 
        }
    }
}
 
Chương trình XMLTreeView: mục đích là hiển thị nội dung của XML lên TreeView
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
namespace ChuongTrinhXML
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(@"D:\Employees.xml");
            TreeNode root = new TreeNode(doc.DocumentElement.Name);
            //them vao nut goc
            treeView1.Nodes.Add(root);
            //qua trinh quyet va them vao cac element
            foreach (XmlNode node in doc.DocumentElement.ChildNodes)
            {
                TreeNode employee = new TreeNode("Employee ID:" +
node.Attributes["EmployeeID"].Value);
                //them cao sau nut goc
                root.Nodes.Add(employee);
                if (node.HasChildNodes)
                {
                    foreach (XmlNode childnode in node.ChildNodes)
                    {  //phuong thuc innerText tra ve gia tri cua Node
                        TreeNode n = new TreeNode(childnode.Name + ":" +
childnode.InnerText);
                        employee.Nodes.Add(n);
                    }
                
                }
            
            }
 
        }
    }
}

Tải về ứng dụng XmlTreeview

stty
 Chia sẻ qua: 
Hot!
Ý kiến bạn đọc

These items will be permanently deleted and cannot be recovered. Are you sure?

Gallery

image

Maecenas viverra rutrum pulvinar

Maecenas viverra rutrum pulvinar! Aenean vehicula nulla sit amet metus aliquam et malesuada risus aliquet. Vestibulum rhoncus, dolor sit amet venenatis porta, metus purus sagittis nisl, sodales volutpat elit lorem…

Read more

Text Links

Thiết kế logo chuyên nghiệp Insky
DAFABET
W88 w88b.com/dang-ky-tai-khoan-w88
W88
Copyright © 2011 - 2012 vietshare.vn by phamkhuong102@gmail.com doanhkisi2315@gmail.com. All rights reserved.