Bài giảng Lập trình Net với C# - Chương 7: XML và .NET với C#

18 35 0
Bài giảng Lập trình Net với C# - Chương 7: XML và .NET với C#

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Lập trình Net với C# - Chương 7: XML và .NET với C# giúp các bạn hiểu được XML là gì? Và ứng dụng XML, XML và hỗ trợ trong .NET, hiểu được các mô hình phân tích cấu trúc XML, giới thiệu thư viện XML.NET.

7/5/16 XML VÀ NET VỚI C# PHAN TRỌNG TIẾN BM Công nghệ phần mềm Khoa Công nghệ thông tin, VNUA Email: phantien84@gmail.com Website: http://timoday.edu.vn 7/5/16 XML NET với C# Mục tiêu q  Hiểu XML gì? Và ứng dụng XML q  XML hỗ trợ NET q  Hiểu mơ hình phân tích cấu trúc XML q  Giới thiệu thư viện XML.NET 7/5/16 XML NET với C# 7/5/16 Nội dung q  Tổng quan XML q  XML Microsoft NET q  Các mơ hình phân tích cấu trúc XML q  Thư viện XML.NET q  Sinh code tự động XML NET q  Kiểm tra tính hợp lệ XML NET q  Áp dụng kiểu style sheet cho tài liệu XML 7/5/16 XML NET với C# Tổng quan XML q  XML (EXtensible Markup Language) thiết kết để miêu tả liệu q  Là ngôn ngữ đánh dấu giống HTML q  Các thẻ (tags) tự định nghĩa người sử dụng q  Được dùng giao thức tích hợp ứng dụng q  Tiêu chuẩn công nghiệp phát triển W3C 7/5/16 XML NET với C# 7/5/16 Ví dụ file XML Windows XP SP2 This is the latest update pack provided by Microsoft Has Firewall Protection Free ~200 MB for Windows XP Home Edition 7/5/16 XML NET với C# Cấu trúc XML Root Element Declaration Parent Element Child Element Windows XP SP2 Attribute This is the latest update pack provided by Microsoft Has Firewall Protection Free ~200 MB for Windows XP Home Edition Content 7/5/16 XML NET với C# 7/5/16 .NET Framework VB C++ C# JScript … ASP NET: Web Services and Web Forms Windows Forms ADO NET: Data and XML Base Class Library Visual Studio NET Common Language Specification Common Language Runtime 7/5/16 XML NET với C# Liên hệ XML ADO.NET Controls, Designers, Code-gen, etc XSL/T, X-Path, Validation, etc XmlDataDocument XmlReader XmlTextReader 7/5/16 XmlNodeReader DataSet Sync DataAdapter SqlDataAdapter OleDbDataAdapter XML NET với C# DataReader SqlDataReader OleDbDataReader 7/5/16 XML NET q  XML: chuẩn công nghiệp, kỹ thuật kết nối ứng dụng q  NET: tảng công nghệ MS nhằm phát triển ứng dụng phân tán q  XML chất gắn kết thành phần (components) NET lại với 7/5/16 XML NET với C# XML.NET Web Services Web Service XML XML Web Service XML XML Web Service XML Client HTML XML 7/5/16 Web Service Client XML NET với C# 10 7/5/16 Các mô hình phân tích XML q  Các mơ hình phân tích XML thơng dụng q Sử dụng mơ hình DOM (Document Object Model) q Mơ hình SAX(Simple API for XML): sử dụng mơ hình đẩy liệu (push model parsing) q Mơ hình phân tích kéo liệu (pull model parsing) q  NET Framework hỗ trợ hai mơ hình q Mơ hình pull q Mơ hình DOM q  Những thuận lợi giới hạn mơ hình? 7/5/16 XML NET với C# 11 Mơ hình DOM q  Phân tích XML nhớ q Một cấu trúc tạo nhớ, mô tả nội dung tài liệu XML q  Mơ hình dùng có bạn cần duyệt động (dynamically navigate) thực thi insert, update delete nội dung tài liệu XML q  Khơng thích hợp bạn cần phân tích cấu trúc XML từ đầu tới cuối theo kiểu read-only q  Ảnh hưởng nhớ: Nạp tệp XML lớn vào DOM làm cạn kiệt tài nguyên 7/5/16 XML NET với C# 12 7/5/16 Phân tích sử dụng DOM XML Step by Step 50.00 7/5/16 XML NET với C# 13 DOM parsing – truy cập chỉnh sử phần liệu static void Main(string[] args) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("books.xml"); XmlNodeList priceNodes = xmlDoc.GetElementsByTagName("Price"); double price; foreach(XmlNode priceNode in priceNodes) { price = Convert.ToDouble(priceNode.InnerText); if (price >= 50) { price = price - (5 * price / 100); //Cap nhat noi dung vao the priceNode.InnerText = price.ToString(); } } //Luu nhung thay doi vao file xmlDoc.Save("books.xml"); } 7/5/16 XML NET với C# 14 7/5/16 Lõi namespace XML.NET q  System.Xml q Là namespace cung cấp tồn lớp chuẩn (standards-based) hỗ trợ phân tích (parsing) XML q Hỗ trợ chuẩn q XML 1.0 namespace XML q XML schemé q Xpath q XSLT q DOM mức q SOAP 1.1 (được sử dụng đối tượng tuần tự) 7/5/16 XML NET với C# 15 Lõi namespace XML.NET q  System.Xml.Xsl q Chứa lớp hỗ trợ biến đổi XSLT q  System.XML.XPath q Chứa lớp hỗ trợ thực thi truy vấn XPath q  System.Xml.Schema q Chứa lớp chuẩn hỗ trợ cho W3C XML schemas q  System.Xml.Serialization q Chứa lớp dùng cho không đối tượng XML 7/5/16 XML NET với C# 16 7/5/16 Tự động phát sinh XML NET q  Các tuỳ chọn có sẵn để lập trình với XML q Non-cached, forward-only streaming q Lập trình với DOM q  Các thuận lợi giới hạn phương thức 7/5/16 XML NET với C# 17 Sử dụng lớp XmlTextWriter q  Thực thi namespace System.Xml q  Thừa kế từ lớp trừu tượng System.Xml.XmlWriter q  Đượng sử dụng lập trình phát sinh XML non-cached, kiểu forward-only q  Có thể dùng để phát sinh XML tới file disk đối tượng NET Framework Stream/TextWriter 7/5/16 XML NET với C# 18 7/5/16 Sử dụng lớp XmlTextWriter XML Step by Step 7/5/16 XML NET với C# 19 Sử dụng lớp XmlTextWriter XmlTextWriter wrt = new XmlTextWriter("books.xml",null); wrt.Formatting = System.Xml.Formatting.Indented; wrt.WriteStartDocument(false); wrt.WriteComment("Catalog fragment"); wrt.WriteDocType("Books", null, "books.dtd", null); wrt.WriteStartElement("Books"); wrt.WriteStartElement("Book"); wrt.WriteAttributeString("", "ISBN", "", "0355605172"); wrt.WriteStartElement("Title"); wrt.WriteString("XML Step by Step"); wrt.WriteEndElement(); wrt.WriteEndElement(); wrt.WriteEndElement(); wrt.Close(); 7/5/16 XML NET với C# 20 10 7/5/16 Sử dung DOM XmlDocument xmldoc = new XmlDocument(); XmlDeclaration xmlDecl = xmldoc.CreateXmlDeclaration("1.0", null, null); xmldoc.AppendChild(xmlDecl); XmlDocumentType docType = xmldoc.CreateDocumentType("Books", null, "c:\books.dtd", null); xmldoc.AppendChild(docType); XmlComment xmlComment = xmldoc.CreateComment("Catalog fragment"); xmldoc.AppendChild(xmlComment); xmldoc.AppendChild(xmldoc.CreateElement("Books")); xmldoc.DocumentElement.AppendChild(GenerateBookNode(xmldoc, "XML Step by Step", "0355605172")); xmldoc.Save("c:\books2.xml"); 7/5/16 XML NET với C# 21 Sử dụng DOM private static XmlNode GenerateBookNode(XmlDocument xmldoc, String Title, String ISBN) { XmlNode bookNode; bookNode = xmldoc.CreateElement("Book"); bookNode.AppendChild(xmldoc.CreateElement("Title")); bookNode.ChildNodes[0].InnerText = Title; bookNode.Attributes.Append(xmldoc.CreateAttribute("ISBN")); bookNode.Attributes.GetNamedItem("ISBN").InnerText = ISBN; return bookNode; } 7/5/16 XML NET với C# 22 11 7/5/16 7/5/16 XML NET với C# 23 Kiểm tra tính hợp lệ XML q  Các lưu đồ (schema) miêu tả cấu trúc file XML Kiểm tra tính hợp lệ đảm bảo mở rộng liệu phù hợp với quy tắc (ngữ pháp) yêu cầu lược đồ 7/5/16 XML NET với C# 24 12 7/5/16 Kiểm tra tính hợp lệ XML q  Có ngôn ngữ đề nghị: q Document Type Definitions (DTD) q XML Data Reduced schema (XDR) q XML Schema Definition language (XSD) q  XSD tương lai Các lược đồ có nhiều lợi DTD: q Lược đồ sử dụng câu lệnh XML dùng phân tích XML q Lược đồ hỗ trợ kiểu liệu (integer, string, Boolean) tương thích với kiểu liệu khác 7/5/16 XML NET với C# 25 Lược đồ NET q  Dữ liệu XML xác nhận (validate) ngôn ngữ lược đồ sử dụng lớp NET q  System.Xml.XmlValidatingReader dùng cho xác nhận q  System.Xml.Schema cung cấp chuẩn sở cho lược đồ XML(cấu trúc kiểu liệu) q  System.Xml.Schema.XmlSchemaCollection chứa cache lược đồ XSD XDR 7/5/16 XML NET với C# 26 13 7/5/16 Các biến đổi XSLT NET q  XSL (Extensible Stylesheet Language) bao gồm phần: q XSLT – XSL transformation q Xpath – XML path language q XSL-FO – XSL formatting objects q  XSLT ngôn ngữ để chuyển đổi tài liệu XML thành tài liệu văn (text-based) q  Quá trình chuyển đổi bao gồm loại: q File XML nguồn q File Stylesheet q File output: xml, html, v.v 7/5/16 XML NET với C# 27 XSLT NET q  Thực thi namespace System.Xml.Xsl q  Hỗ trợ theo khuyến nghị W3C XSLT 1.0 q  Các lớp q XslTransform – biến đổi liệu XML sử dụng XSLT stylesheet q XslArgumentList – Cho phép tham biến đối tượng gọi stylesheet q XsltException – Trả thông tin exception xử lý XSLT 7/5/16 XML NET với C# 28 14 7/5/16 Tổng quan XPath q  Là truy vấn (query) cho XML – SQL XML q  Được sử dụng để xác định biểu thức truy vấn tới vị trí nút tài liệu XML q  Được sử dụng XSLT stylesheets để xác định vị trí áp dụng biến đổi tới nút cụ thể tài liệu XML q  Được sử dụng DOM code để xác định vị trí xử lý nút cụ thể 7/5/16 XML NET với C# 29 XPath NET q  Các namespace liên quan q System.Xml q System.Xml.XPath q  Các lớp NET Framework q XmlDocument, XmlNoteList XmlNode q XPathDocument q XPathNavigator q XPathNodeIteractor q XPathExpression 7/5/16 XML NET với C# 30 15 7/5/16 Thực thi truy vấn XPath q  Sử dụng đối tượng DOM System.Xml q Các class thường sử dụng: XMLDocument, XMLNodeList, XMLNode q Nạp tài liệu XML vào lớp XMLDocument q Sử dụng phương thức SelectNodes/SelectSingleNode lớp XmlDocument để thực thi truy vấn XPath q Khởi gán trả danh sách node/node tới đối tượng XmlNodeList/ XmlNode q Sử dụng đối tượng XmlNode để duyệt qua XmlNodeList xử lý kết 7/5/16 XML NET với C# 31 Thực truy vấn XPath q  Ví dụ file XML “books.xml” The C Programming language XML Step by Step q  Ví dụ cần thực truy vấn lấy tất tên sách “XML” q Truy vấn XPath: //Title[starts-with(.,’XML’)] 7/5/16 XML NET với C# 32 16 7/5/16 Thực thi truy vấn XPath static void Main(string[] args) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("books.xml"); XmlNodeList matchingNodes = xmlDoc.SelectNodes("//Title[startswith(.,'XML')]"); if (matchingNodes.Count == 0) { Console.WriteLine("No matching nodes were identified for the specified XPath query"); } else { foreach (XmlNode node in matchingNodes) { Console.WriteLine(node.Name + ":" + node.InnerText); } } Console.ReadLine(); } 7/5/16 XML NET với C# 33 Tổng kết q  Đã giới thiệu XML NET q  Đã trình bày mơ hình phân tích XML NET Framework q  Nghiên cứu phân tích DOM NET Framework q  Các namespace NET liên quan XML q  Thực lập trình tạo XML NET q  Thực lập trình kiểm tra hợp lệ tài liệu XML q  Thực thi biến đổi XSLT q  Thực thi truy vấn XPath 7/5/16 XML NET với C# 34 17 7/5/16 7/5/16 XML NET với C# 35 Tài liệu tham khảo q  http://www.w3schools.com/xml/ q  http://web2.uwindsor.ca/courses/cs/aggarwal/HPGCGroup/ 2.ppt q  http://www.firstobject.com/xml-reader-sax-vs-xml-pullparser.htm q  https://support.microsoft.com/en-us/kb/317463 7/5/16 XML NET với C# 36 18 ... (components) NET lại với 7/5/16 XML NET với C# XML .NET Web Services Web Service XML XML Web Service XML XML Web Service XML Client HTML XML 7/5/16 Web Service Client XML NET với C# 10 7/5/16... W3C XML schemas q  System .Xml. Serialization q Chứa lớp dùng cho không đối tượng XML 7/5/16 XML NET với C# 16 7/5/16 Tự động phát sinh XML NET q  Các tuỳ chọn có sẵn để lập trình với XML q Non-cached,... Language Runtime 7/5/16 XML NET với C# Liên hệ XML ADO .NET Controls, Designers, Code-gen, etc XSL/T, X-Path, Validation, etc XmlDataDocument XmlReader XmlTextReader 7/5/16 XmlNodeReader DataSet

Ngày đăng: 08/05/2021, 12:24

Từ khóa liên quan

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

Tài liệu liên quan