Курс по информационни
технологии
Занятие №4
XML. XSD. XML в .NET Framework

2013
Съдържание 1/1
•
•
•
•
•
•

XML
XML Schema Definition (XSD)
Приложения на XML
XmlDocument
LINQ to XML
Сериализиране на обе...
XML
• Какво е „XML“?
– eXtensible Markup Language
– Формален език за съхранение на структурирани
данни
– Сходен с HTML
– П...
XML
• Възли (nodes)
–
–
–
–
–
–
–
–
–

Основна структурна единица на XML документ
Организирани в дървовидна структура
Елем...
XML
• Елементи
– Име
•
•
•
•
•

Поредица от символи
Не съдържа интервали
Не започва с цифра или препинателен знак
Не започ...
XML
• Елементи
<library>
<books>
<book>
<title>The Fellowship of the Ring</title>
</book>
<book>
<title>The Two Towers</ti...
XML
• Атрибути
– Име – важат правилата за именоване на елементи;
уникално измежду всички атрибути на елемента
– Включват с...
XML
• Атрибути
<library>
<books>
<book author="J. R. R. Tolkien" year="1954">
<title>The Fellowship of the Ring</title>
</...
XML
• Коментари
– Заграждат се между поредиците от символи <!-- и
-->
– Не се обработват от приложенията, които четат XML
...
XML
• Представяне на неразрешени символи
– Използват се entity references: поредици от символи,
започващи с & и завършващи...
XML
• CDATA възли
– Служат за описване на текст, който съдържа много
неразрешени символи, така че да не се налага те да се...
XML
• XML декларация
– Поставя се в началото на XML документа, преди
кореновия елемент
– Указва версията на XML спецификац...
XML
• Пространства от имена
– Произволни низове
– Служат за различаване на елементи или атрибути със
съвпадащи имена (подо...
XML
• Пространства от имена
– Пространството от имена по подразбиране се
определя от xmlns атрибута
– Префиксите се постав...
XML Schema Definition
• Какво е „XML Schema Definition“?
– Вид XML документ
– Служи за формално описване на структурата на...
XML Schema Definition
• Основни характеристики и компоненти на XML
схема
–
–
–
–

Целево пространство от имена
Декларации ...
XML Schema Definition
• Целево пространство от имена
– Указва пространството от имена по подразбиране,
чиито елементи/атри...
XML Schema Definition
• Прости типове данни
– Вградени типове данни
– Потребителски дефинирани прости типове данни
• Избро...
XML Schema Definition
• Сложни типове данни
– Описват групи от елементи
– Може да се посочи поредност
– Може да се укажат ...
XML Schema Definition
• Декларации на елементи
– Описват съдържанието на елементите на съответното
място в дървото на XML ...
XML Schema Definition
• Декларации на атрибути
– Описват типа на данните, които се съхраняват в
съответните атрибути, какт...
XML Schema Definition
• Обвързване на XML документ със схема
– Осъществява се чрез атрибута schemaLocation от
пространство...
XML Schema Definition
• Валидиране на XML документ
– Документът се валидира спрямо схемата (или
схемите), с която е обвърз...
Приложения на XML
• Какви са приложенията на XML?
–
–
–
–

Съхранение на данни
Интеграция на софтуерни системи
Уеб услуги
...
Приложения на XML
• Съхранение на данни
–
–
–
–

Данните се сериализират в XML документ
Структурираност и еднозначност
Въз...
Приложения на XML
• Интеграция на софтуерни системи
– Различните системи боравят с различно форматирани
данни
– Универсале...
Приложения на XML
• Уеб услуги
– Универсален, строго дефиниран стандарт
– Възможност за предаване през HTTP
– Библиотеки з...
Приложения на XML
• Езици, специфични за предметната област
–
–
–
–
–

XSD
XSLT
XAML
DBML
XHTML
XmlDocument
• Класът System.Xml.XmlDocument
– Дефиниран в асемблито System.Xml
– Служи за зареждане на XML документ в паме...
XmlDocument
• Създаване на XML документи
XmlDocument xmlDocument = new XmlDocument();
XmlDeclaration xmlDeclaration =
xmlD...
XmlDocument
• Прочитане на XML документи
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(@"C:library.xml");
...
LINQ to XML
• Какво е „LINQ to XML“?
– Част от .NET Framework
– Имплементация на LINQ
– Допълнителни разширителни методи з...
LINQ to XML
• Създаване на XML документи
XDocument xmlDocument = new XDocument();
xmlDocument.Declaration = new XDeclarati...
LINQ to XML
• Създаване на XML документи
XAttribute authorAttribute = new XAttribute("author", "J. R. R. Tolkien");
XEleme...
LINQ to XML
• Прочитане на XML документи
XDocument xmlDocument = XDocument.Load(@"C:library2.xml");
var books =
from e in ...
Сериализиране на обекти към XML
• Сериализиране към XML
– Вградена поддръжка в .NET Framework
– Пространството от имена Sy...
Сериализиране на обекти към XML
• Сериализиране по подразбиране
– По подразбиране всички свойства се сериализират
като еле...
Сериализиране на обекти към XML
• Управление на сериализирането
–
–
–
–
–

Атрибутът XmlRoot
Атрибутът XmlElement
Атрибутъ...
Сериализиране на обекти към XML
• Управление на сериализирането
[XmlRoot("library")]
public class Library
{
[XmlArray("boo...
Сериализиране на обекти към XML
• Класът XmlSerializer
– В конструктора му се подава тип, който ще бъде
сериализиран или д...
Сериализиране на обекти към XML
• Сериализиране на обект към XML
var book = new Book
{
Author = "J. R. R. Tolkien",
Title ...
Сериализиране на обекти към XML
• Десериализиране на обект от XML
Library library;
var xmlSerializer = new XmlSerializer(t...
Въпроси?
Благодаря!
• Александър Далемски
–
–
–
–

sasho@david.bg
musashi.bg@gmail.com
Skype: musasho
https://www.facebook.com/adal...
Upcoming SlideShare
Loading in …5
×

Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework

389 views
264 views

Published on

Занятие №4 на курса по информационни технологии (2013) провеждан от ДАВИД академия в ПМГ "Никола Обрешков" - Казанлък. Включва темите:
- XML
- XSD
- XML в .NET Framework

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
389
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework

  1. 1. Курс по информационни технологии Занятие №4 XML. XSD. XML в .NET Framework 2013
  2. 2. Съдържание 1/1 • • • • • • XML XML Schema Definition (XSD) Приложения на XML XmlDocument LINQ to XML Сериализиране на обекти към XML
  3. 3. XML • Какво е „XML“? – eXtensible Markup Language – Формален език за съхранение на структурирани данни – Сходен с HTML – Препоръчан от W3C през 1998 г.
  4. 4. XML • Възли (nodes) – – – – – – – – – Основна структурна единица на XML документ Организирани в дървовидна структура Елементи Атрибути Текст CDATA Коментари Entity references Други...
  5. 5. XML • Елементи – Име • • • • • Поредица от символи Не съдържа интервали Не започва с цифра или препинателен знак Не започва с поредицата xml Прави се разлика между малки и главни букви – Отварящ и затварящ таг – заградени в ъглови скоби – Кратък запис с един таг – може да съдържа единствено атрибути – Коренов елемент – единствен
  6. 6. XML • Елементи <library> <books> <book> <title>The Fellowship of the Ring</title> </book> <book> <title>The Two Towers</title> </book> <book> <title>The Return of the King</title> </book> </books> <newspapers /> </library>
  7. 7. XML • Атрибути – Име – важат правилата за именоване на елементи; уникално измежду всички атрибути на елемента – Включват се в отварящия таг на елемента – Съдържание – текст или референция към обект – Съдържанието се поставя в кавички
  8. 8. XML • Атрибути <library> <books> <book author="J. R. R. Tolkien" year="1954"> <title>The Fellowship of the Ring</title> </book> <book author="J. K. Rowling" year="1997"> <title>Harry Potter and the Philosopher's Stone</title> </book> </books> <newspapers blackAndWhite="true" /> </library>
  9. 9. XML • Коментари – Заграждат се между поредиците от символи <!-- и --> – Не се обработват от приложенията, които четат XML документа <library> <books> <!-- Good book! --> <book author="J. R. R. Tolkien" year="1954"> <title>The Fellowship of the Ring</title> </book> <!-<book author="J. K. Rowling" year="1997"> <title>Harry Potter and the Philosopher's Stone</title> </book> --> </books> </library>
  10. 10. XML • Представяне на неразрешени символи – Използват се entity references: поредици от символи, започващи с & и завършващи с ; – &lt; замества символа < – &gt; замества символа > – &amp; замества символа & – &quot; замества символа " – Екзотични Unicode символи могат да се запишат чрез &#nnnn; или &#xhhhh;, където nnnn е десетичен запис на кода на символа, а hhhh е шестнадесетичен запис на кода му
  11. 11. XML • CDATA възли – Служат за описване на текст, който съдържа много неразрешени символи, така че да не се налага те да се заместват с entity references навсякъде – Текстът се загражда между поредиците от символи <![CDATA[ и ]]> <codeSamples> <codeSample> <![CDATA[ public void FilterNumbers(int[] numbers) { return numbers.Where(n => n > 0 && n < 1000); } ]]> </codeSample> </codeSamples>
  12. 12. XML • XML декларация – Поставя се в началото на XML документа, преди кореновия елемент – Указва версията на XML спецификацията, описваща формата на документа; кодирането на символите в документа (UTF-8, ANSI code page 1251 и т.н.) както и това дали документът е независим от външни източници <?xml version="1.0" encoding="utf-8" ?>
  13. 13. XML • Пространства от имена – Произволни низове – Служат за различаване на елементи или атрибути със съвпадащи имена (подобно на пространствата от имена в .NET) – Указват се в рамките на елемент с помощта на служебни атрибути xmlns или xmlns:prefix, където prefix е произволна поредица от символи, отговаряща на изискванията за валидно име на елемент – Указаните пространства от имена са валидни в цялото поддърво от елементи на текущия елемент
  14. 14. XML • Пространства от имена – Пространството от имена по подразбиране се определя от xmlns атрибута – Префиксите се поставят преди името на елемента/атрибута, следвани от двоеточие <library xmlns="http://david.bg/xml/library" xmlns:p="http://david.bg/xml/persons"> <books> <book author="J. R. R. Tolkien" year="1954"> <title>The Fellowship of the Ring</title> <checkedOutBy> <p:person firstName="Alexander" lastName="Dalemski" /> </checkedOutBy> </book> </books> </library>
  15. 15. XML Schema Definition • Какво е „XML Schema Definition“? – Вид XML документ – Служи за формално описване на структурата на други XML документи – Налага ограничения върху допустимите възли в документа – Използва се за валидиране на XML документи – XSD файлове
  16. 16. XML Schema Definition • Основни характеристики и компоненти на XML схема – – – – Целево пространство от имена Декларации на типове данни (прости и сложни) Декларации на елементи Декларации на атрибути
  17. 17. XML Schema Definition • Целево пространство от имена – Указва пространството от имена по подразбиране, чиито елементи/атрибути се описват от схемата – Обикновено всички елементи и атрибути, описвани в схемата, принадлежат на едно и също пространство от имена <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://david.bg/xml/library"> </xs:schema>
  18. 18. XML Schema Definition • Прости типове данни – Вградени типове данни – Потребителски дефинирани прости типове данни • Изброени типове • Типове, получени чрез ограничаване на дефиниционното множество на друг тип данни • Типове, получени чрез обединение на дефиниционните множества на други типове данни <xs:simpleType name="bgdate"> <xs:restriction base="xs:string"> <xs:pattern value="d{2}.d{2}.d{4}" /> </xs:restriction> </xs:simpleType>
  19. 19. XML Schema Definition • Сложни типове данни – Описват групи от елементи – Може да се посочи поредност – Може да се укажат минимален и максимален брой повторения <xs:complexType name="book"> <xs:sequence> <xs:element name="title" type="xs:string" /> <xs:element name="genre" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType>
  20. 20. XML Schema Definition • Декларации на елементи – Описват съдържанието на елементите на съответното място в дървото на XML документа, които имат съответното име <xs:element name="book"> <xs:complexType> <xs:sequence> <xs:element name="title" type="xs:string" /> <xs:element name="genre" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element>
  21. 21. XML Schema Definition • Декларации на атрибути – Описват типа на данните, които се съхраняват в съответните атрибути, както и дали са задължителни <xs:element name="book"> <xs:complexType> <xs:sequence> <xs:element name="title" type="xs:string" /> <xs:element name="genre" type="xs:string" minOccurs="0" /> </xs:sequence> <xs:attribute name="author" type="xs:string" /> <xs:attribute name="year" type="xs:int" use="optional" /> </xs:complexType> </xs:element>
  22. 22. XML Schema Definition • Обвързване на XML документ със схема – Осъществява се чрез атрибута schemaLocation от пространството от имена http://www.w3.org/2001/XMLSchema-instance <library xmlns="http://david.bg/xml/library" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://david.bg/xml/library http://david.bg/schemas/library.xsd"> <books> <book author="J. R. R. Tolkien" year="1954"> <title>The Fellowship of the Ring</title> </book> </books> </library>
  23. 23. XML Schema Definition • Валидиране на XML документ – Документът се валидира спрямо схемата (или схемите), с която е обвързан – Visual Studio – Външни инструменти – При прочитане на документа в .NET Framework
  24. 24. Приложения на XML • Какви са приложенията на XML? – – – – Съхранение на данни Интеграция на софтуерни системи Уеб услуги Езици, специфични за предметната област (domainspecific languages, DSL)
  25. 25. Приложения на XML • Съхранение на данни – – – – Данните се сериализират в XML документ Структурираност и еднозначност Възможност за валидация Заема повече място от двоично сериализирани данни
  26. 26. Приложения на XML • Интеграция на софтуерни системи – Различните системи боравят с различно форматирани данни – Универсален формат за данните, базиран на XML – Трансформация от вътрешното представяне на данните в системата към универсалния формат и обратно
  27. 27. Приложения на XML • Уеб услуги – Универсален, строго дефиниран стандарт – Възможност за предаване през HTTP – Библиотеки за работа с XML документи във всякакви операционни системи/платформи – Разширяемост на структурата на данните
  28. 28. Приложения на XML • Езици, специфични за предметната област – – – – – XSD XSLT XAML DBML XHTML
  29. 29. XmlDocument • Класът System.Xml.XmlDocument – Дефиниран в асемблито System.Xml – Служи за зареждане на XML документ в паметта и манипулации с възлите му – Може да се използва за създаване на XML документи и записването им във файлове – Методът Load(…) – Методът Save(…) XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(@"C:test.xml"); xmlDocument.Save(@"C:test2.xml");
  30. 30. XmlDocument • Създаване на XML документи XmlDocument xmlDocument = new XmlDocument(); XmlDeclaration xmlDeclaration = xmlDocument.CreateXmlDeclaration("1.0", "utf-8", "yes"); xmlDocument.AppendChild(xmlDeclaration); XmlElement libraryElement = xmlDocument.CreateElement("library"); xmlDocument.AppendChild(libraryElement); XmlElement booksElement = xmlDocument.CreateElement("books"); libraryElement.AppendChild(booksElement); XmlElement bookElement = xmlDocument.CreateElement("book"); booksElement.AppendChild(bookElement); XmlAttribute authorAttribute = xmlDocument.CreateAttribute("author"); authorAttribute.Value = "J. R. R. Tolkien"; bookElement.Attributes.Append(authorAttribute); XmlElement titleElement = xmlDocument.CreateElement("title"); XmlText titleText = xmlDocument.CreateTextNode("The Two Towers"); titleElement.AppendChild(titleText); bookElement.AppendChild(titleElement); xmlDocument.Save(@"C:library.xml");
  31. 31. XmlDocument • Прочитане на XML документи XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(@"C:library.xml"); XmlElement libraryElement = xmlDocument["library"]; XmlElement booksElement = libraryElement["books"]; XmlNodeList bookElements = booksElement.GetElementsByTagName("book"); foreach (XmlElement bookElement in bookElements) { XmlAttribute authorAttribute = bookElement.Attributes["author"]; XmlElement titleElement = bookElement["title"]; Console.WriteLine("Title: {0}; Author: {1}", titleElement.InnerText, authorAttribute.Value); } Console.ReadLine();
  32. 32. LINQ to XML • Какво е „LINQ to XML“? – Част от .NET Framework – Имплементация на LINQ – Допълнителни разширителни методи за работа с колекции от XML възли – Улеснява боравенето с XML документи – Асемблито System.Xml.Linq – Пространството от имена System.Xml.Linq
  33. 33. LINQ to XML • Създаване на XML документи XDocument xmlDocument = new XDocument(); xmlDocument.Declaration = new XDeclaration("1.0", "utf-8", "yes"); XElement libraryElement = new XElement("library"); xmlDocument.Add(libraryElement); XElement booksElement = new XElement("books"); libraryElement.Add(booksElement); XElement bookElement = new XElement("book"); booksElement.Add(bookElement); XAttribute authorAttribute = new XAttribute("author", "J. R. R. Tolkien"); XElement titleElement = new XElement("title", "The Two Towers"); bookElement.Add(authorAttribute, titleElement); xmlDocument.Save(@"C:library.xml");
  34. 34. LINQ to XML • Създаване на XML документи XAttribute authorAttribute = new XAttribute("author", "J. R. R. Tolkien"); XElement titleElement = new XElement("title", "The Two Towers"); XElement bookElement = new XElement("book", authorAttribute, titleElement); XElement booksElement = new XElement("books", bookElement); XElement libraryElement = new XElement("library", booksElement); XDeclaration xmlDeclaration = new XDeclaration("1.0", "utf-8", "yes"); XDocument xmlDocument = new XDocument(xmlDeclaration, libraryElement); xmlDocument.Save(@"C:library.xml");
  35. 35. LINQ to XML • Прочитане на XML документи XDocument xmlDocument = XDocument.Load(@"C:library2.xml"); var books = from e in xmlDocument.Element("library").Element("books") .Elements("book") where e.Attribute("author") != null select new { Title = e.Element("title").Value, Author = e.Attribute("author").Value, }; foreach (var book in books) { Console.WriteLine("Title: {0}; Author: {1}", book.Title, book.Author); }
  36. 36. Сериализиране на обекти към XML • Сериализиране към XML – Вградена поддръжка в .NET Framework – Пространството от имена System.Xml.Serialization в асемблито System.Xml – Сериализират се единствено публичните свойства на обекта – Атрибути за управление сериализирането на класове и свойства – Класът XmlSerializer
  37. 37. Сериализиране на обекти към XML • Сериализиране по подразбиране – По подразбиране всички свойства се сериализират като елементи – Името на елементите по подразбиране съвпада с името на свойството – Ако се сериализира колекция от елементи, по подразбиране се създава един елемент с името на колекцията и в него се поставят по един елемент за всеки от обектите в колекцията; имената на вътрепните елементи се определят от името на типа на обектите
  38. 38. Сериализиране на обекти към XML • Управление на сериализирането – – – – – Атрибутът XmlRoot Атрибутът XmlElement Атрибутът XmlAttribute Атрибутът XmlArray Атрибутът XmlArrayItem
  39. 39. Сериализиране на обекти към XML • Управление на сериализирането [XmlRoot("library")] public class Library { [XmlArray("books")] [XmlArrayItem("book")] public List<Book> Books { get; set; } } public class Book { [XmlAttribute("author")] public string Author { get; set; } [XmlElement("title")] public string Title { get; set; } }
  40. 40. Сериализиране на обекти към XML • Класът XmlSerializer – В конструктора му се подава тип, който ще бъде сериализиран или десериализиран – Методът Serialize(…) – Методът Deserialize(…)
  41. 41. Сериализиране на обекти към XML • Сериализиране на обект към XML var book = new Book { Author = "J. R. R. Tolkien", Title = "The Two Towers", }; var library = new Library { Books = new List<Book> { book }, }; var xmlSerializer = new XmlSerializer(typeof(Library)); using (FileStream stream = File.Create(@"C:library.xml")) { xmlSerializer.Serialize(stream, library); }
  42. 42. Сериализиране на обекти към XML • Десериализиране на обект от XML Library library; var xmlSerializer = new XmlSerializer(typeof(Library)); using (FileStream stream = File.OpenRead(@"C:library.xml")) { library = (Library)xmlSerializer.Deserialize(stream); } foreach (Book book in library.Books) { Console.WriteLine("Title: {0}; Author: {1}", book.Title, book.Author); }
  43. 43. Въпроси?
  44. 44. Благодаря! • Александър Далемски – – – – sasho@david.bg musashi.bg@gmail.com Skype: musasho https://www.facebook.com/adalemski • ДАВИД академия – – – – acad@david.bg http://acad.david.bg/ @david_academy https://www.facebook.com/groups/david.academy/

×