Danh mục

Thao tác trên XML part 8

Số trang: 16      Loại file: pdf      Dung lượng: 182.17 KB      Lượt xem: 9      Lượt tải: 0    
10.10.2023

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

XML và ADO.NET XML là lớp kết nối giữa ADO.NET với phần còn lại của thế giới. ADO.NET được thiết kế từ sự có phát triển của việc sử dụng môi trường XML. XML được sử dụng để truyền dữ liệu trừ nơi lưu trữ vào ứng dụng hoặc trang web.
Nội dung trích xuất từ tài liệu:
Thao tác trên XML part 8XML và ADO.NETXML là lớp kết nối giữa ADO.NET với phần còn lại của thế giới. ADO.NET được thiếtkế từ sự có phát triển của việc sử dụng môi trường XML. XML được sử dụng để truyềndữ liệu trừ nơi lưu trữ vào ứng dụng hoặc trang web. Từ khi ADO.NET sử dụng XMLnhư là môi trường truyền tải, dữ liệu có thể trao đổi giữa ứng dụng và hệ thống nó khôngchỉ xảy ra trong ADO.NET. Bởi sự quan trọng của XML trong ADO.NET, có một vàiđặc tính mạnh mẽ trong ADO.NET cho phép đọc và ghi các tài liệu XML. Không giantên System.Xml cũng chứa các lớp có thể hủy và sử dụng dữ liệu quan hệ ADO.NET.Chuyển dữ liệu ADO.NET thành XMLTrong ví dụ đầu tiên chúng ta sẽ xem xét cách dùng ADO.NET, streams, và XML đểpull một vài dữ liệu từ cơ sở dữ liệu Northwind vào một DataSet, load một đối tượngXmlDocument với XML từ DataSet, và load XML vào môt listbox. Để chạy ứng dụngchúng ta cần chèn các câu lệnh using sau:using System.Data;using System.Xml;using System.Data.SqlClient;using System.IO;Nếu sử dụng XmlDocument, chúng ta cũng cần phải thêm dòng sau:private XmlDocument doc = new XmlDocument();Các ví dụ ADO.NET thường có thêm một DataGrid trong forms. Nó cho phép chúng tathấy dữ liệu trong ADO.NET DataSet. Đây là mã cho ví dụ đầu tiên, mã có thể được tìmthấy trong thư mục ADOSample1:private void button1_Click(object sender, System.EventArgs e){ //create a dataset DataSet ds = new DataSet(XMLProducts); //connect to the northwind database and //select all of the rows from products table //make sure your login matches your version of SqlServer SqlConnection conn = new SqlConnection (@server=GLYNNJ_CSNetSDK;uid=sa;pwd=;database=northwind); SqlDataAdapter da = new SqlDataAdapter(SELECT * FROM Products,conn);Sau khi chúng ta tạo SqlDataAdapter, da, và DataSet, ds, chúng ta tạo một đối tượngMemoryStream, một đối tượng StreamReader, và một đối tượng StreamWriter. Các đốitượng StreamReader và StreamWriter se sử dụng MemoryStream đê di chuyển trongXML: MemoryStream memStrm=new MemoryStream(); StreamReader strmRead=new StreamReader(memStrm); StreamWriter strmWrite=new StreamWriter(memStrm);Chúng ta sẽ dùng một MemoryStream vì vậy không thể ghi bất kì cái ghi lên đĩa, tấtnhiên, chúng ta có thể sử dụng bất kì đối tượng này xuất phát từ lớp Stream nhưFileStream. Tiếp theo, chúng ta điền DataSet và kết nối nó với DataGrid. Dữ liệu trongDataSet bây giờ được hiển thị trong DataGrid: da.Fill(ds,products); //load data into DataGrid dataGrid1.DataSource=ds; dataGrid1.DataMember=products;Bước tiếp theo là phát ra XML. Chúng ta gọi phương thức WriteXml() từ lớp DataSet.Phương thức này phát ra một tài liệu XML. Có hai quá tải của phương thức WriteXml():một cần một chuỗi chứa tên và đường dẫn của file, một cái khác cần mọt tham số mode.Mode này là một kiểu liệt kê XmlWriteMode, có các giá trị sau: • IgnoreSchema • WriteSchema • DiffGramIgnoreSchema được dùng nếu bạn không muốn WriteXml() ghi một inline schema vàođầu file XML; dùng tham số WriteSchema nếu bạn muốn như vậy. Chúng ta sẽ xem xétDiffGrams ở phần sau. ds.WriteXml(strmWrite,XmlWriteMode.IgnoreSchema); memStrm.Seek(0,SeekOrigin.Begin); //read from the memory stream to an XmlDocument object doc.Load(strmRead); //get all of the products elements XmlNodeList nodeLst=doc.GetElementsByTagName(ProductName); //load them into the list box foreach(XmlNode nd in nodeLst) listBox1.Items.Add(nd.InnerText);}private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e){ //when you click on the listbox, //a message box appears with the unit price string srch=XMLProducts/products[ProductName= + + listBox1.SelectedItem.ToString() + + ]; XmlNode foundNode=doc.SelectSingleNode(srch); if(foundNode!=null) MessageBox.Show(foundNode.SelectSingleNode(UnitPrice).InnerText); else MessageBox.Show(Not found);}Đây là màn hình, bạn có thể nhìn thấy kết quả trong danh sách cũng như trong DataGrid:Nếu bạn chỉ muốn schema, bạn có thể gọi WriteXmlSchema() thay vì WriteXml().Phương thức này có bốn quá. Một cần một chuỗi, với đường dẫn và tên của file XML.Quá tải thứ hai sử dụng một đối tượng xuất phát từ lớp XmlWriter. Quá tải thứ ba sửdụng mọt đối tượng xuất phát từ lớp TextWriter. Quá tải thứ tư được sử dụng trong ví dụ.Ngoài ra, nếu bạn muốn có phép ghi tài liệu XML lên đĩa, bạn có thể làm như sau:string file = c:\test\product.xml;ds.WriteXml(file);Nó cho phép ghi tài liệu XML lên đĩa để có thể đọc bởi các luồng khách, hoặc bởiDataSet, hoặc sử dụng một ứng dụng khác, một trang web khác. Khi tham sô XmlModekhông được chỉ định, XmlDocument phải chứa một schema. Trong ví dụ của chúng tadùng stream như là một tham số cho phương thức XmlDocument.Load().Khi XmlDocument được chuẩn bị, chúng ta load listbox bằng câu lệnh XPath như chúngta đã ...

Tài liệu được xem nhiều: