SlideShare a Scribd company logo
1 of 28
Download to read offline
Темы лекции: Работа с XML.
Практическое задание: Работа с XML.
Тренер: Игорь Шкулипа, к.т.н.
Платформа .Net и язык программирования C#.
Занятие 9
http://www.slideshare.net/IgorShkulipa 2
XML
XML (eXtensible Markup Language, или расширяемый язык разметки) — это
язык описания документов, во многом похожий на язык разметки
гипертекста HTML, но гораздо более универсальный, чем HTML.
XML — текстовый формат, предназначенный для хранения
структурированных данных (взамен существующих файлов баз
данных), для обмена информацией между программами, а также для
создания на его основе более специализированных языков разметки
(например, XHTML), иногда называемых словарями.
Пример:
<?xml version="1.0"?>
<list_of_items>
<item id="1">
<first/>Первый</item>
<item id="2">Второй
<sub_item>подпункт 1</sub_item>
</item>
<last/>Последний</item>
</list_of_items>
http://www.slideshare.net/IgorShkulipa 3
Формат XML-файла
Первая строка XML документа называется объявлением XML (declaration) это
необязательная строка, указывающая версию стандарта XML. Здесь может быть
указана кодировка символов и внешние зависимости.:
<?xml version="1.0" encoding=“windows-1251"?>
Далее идут элементы документа, разделенные открывающими и закрывающими
тэгами. Каждый элемент имеет имя, которым начинается открывающий тэг
элемента и заканчивается закрывающий.
Содержимым элемента (content), называется всё, что расположено между
открывающим и закрывающим тегами. Все значения атрибутов должны быть в
одинарных или двойных кавычках. Каждый XML документ обязательно содержит
один корневой элемент (report) и сколько угодно вложенных элементов (place,
measurement). Любой вложенный элемент также может иметь свои вложенные
элементы.
Комментарии вводятся конструкцией:
<!-- Текст комментария -->
Текстовые данные в XML называются сущностью (entity). Текст может содержать
спецсимволы (некоторые символы запрещены) ссылки на сущность (entity
references). Кодировка спецсимволов в XML аналогична HTML:
&amp; &
&lt <
&gt; >
&apos; '
&quot; "
&nbsp; пробел.
http://www.slideshare.net/IgorShkulipa 4
В 1980-е годы был разработан - SGML (Standard Generalized Markup
Language)
◦ разработан для МО США; задача - снизить расходы на передачу
документации
◦ четкая иерархическая структурированность информации;
◦ расширяемость стандарта
◦ отделение информации от представления (использование DTD -
Document Type Definition)
◦ слишком сложен для реализации в Web (Sounds Good, Maybe Later)
Предыстория XML: SGML
http://www.slideshare.net/IgorShkulipa 5
• Документ называется действительным, если он имеет связанное с
ним определение типа документа (схему) и соответствует ему
• В XML 1.0 единственным типом схем является DTD – Document Type
Definition
• DTD основано на упрощенном формате SGML и было создано для
нужд EDI (Electronic Data Interchange)
• Синтаксис DTD существенно отличается от XML
Определение типа документа (DTD)
<!ELEMENT Joke (Setup, Punchline) >
<!ATTLIST Joke author CDATA #REQUIRED
firstTold CDATA #IMPLIED >
<!ELEMENT Setup (#PCDATA) >
<!ELEMENT Punchline (#PCDATA) >
<?xml version="1.0"?>
<!DOCTYPE Joke SYSTEM "Joke.dtd">
<Joke author="Groucho Marx">
<Setup>Outside of a dog, a book is man's
best friend</Setup>
<Punchline>Inside of a dog, it's too dark
to read.</Punchline>
</Joke>
http://www.slideshare.net/IgorShkulipa 6
Проблемы DTD
● DTD - строго иерархический формат, плохо подходящий для
меняющихся документов
● У документа может быть только один тип, что не очень удобно для
коммерческих приложений
● Синтаксис DTD не похож на XML и плохо воспринимается человеком
● В DTD допустимо использование только текстового типа данных (нет
числового типа или даты)
http://www.slideshare.net/IgorShkulipa 7
XML-схемы
● Схемы должны следовать синтаксису XML
● Стандарт схемы должен поддерживать распространенные типы данных
(число, дата…)
● Схема XML должна быть открытой для подключения внешних источников
● Метод разрешения неоднозначности имен при соединении двух файлов -
пространства имен.
http://www.slideshare.net/IgorShkulipa 8
XML Schema
XML Schema – промышленный стандарт описания XML-документов
XML Schema делает следующее:
• Описывает названия элементов и атрибутов (словарь).
• Описывает взаимосвязь между элементами и атрибутами, а также
их структуру (модель содержания).
• Описывает типы данных.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="книга" type="Книга" />
<xs:complexType name="Книга">
<xs:sequence>
<xs:element name="название" type="xs:string" />
<xs:element name="цена" type="xs:decimal" />
</xs:sequence>
</xs:complexType>
</xs:schema>
http://www.slideshare.net/IgorShkulipa 9
Document Object Model
• Объектная модель документа открывает доступ к XML-документу как к
древовидной структуре в памяти
• Позволяет работать с XML-документом как с обычным объектом в
любом современном языке программирования
• Перед началом работы DOM требует загрузки всего документа в
память (поэтому разрабатываются и альтернативные стандарты)
• Стандарт оставляет разработчикам большую свободу в интерпретации
• Microsoft предлагает MS XML DOM 3.0, интегрированную в продукты
Microsoft
XPath
XPath (XML Path Language) — язык запросов к элементам XML-документа.
Разработан для организации доступа к частям документа XML в файлах
трансформации XSLT и является стандартом консорциума W3C. XPath
призван реализовать навигацию по DOM в XML
http://www.slideshare.net/IgorShkulipa 10
XSLT
XSLT (eXtensible Stylesheet Language Transformations) — язык
преобразования XML-документов. Спецификация XSLT входит в состав
XSL и является рекомендацией W3C.
При применении таблицы стилей XSLT, состоящей из набора шаблонов, к
XML-документу (исходное дерево) образуется конечное дерево, которое
может быть сериализовано в виде XML-документа, XHTML-документа,
HTML-документа или простого текстового файла.
XSLT имеет множество различных применений, в основном в области web-
программирования и генерации отчётов. Одной из задач, решаемых
языком XSLT, является отделение данных от их представления, как часть
общей парадигмы MVC.
XQuery
XQuery — язык запросов, разработанный для обработки данных в
формате XML. XQuery использует XML как свою модель данных.
http://www.slideshare.net/IgorShkulipa 11
Достоинства XML
• XML — язык разметки, позволяющий отобразить двоичные данные в текст,
читаемый человеком и анализируемый компьютером;
• XML поддерживает Юникод;
• в формате XML могут быть описаны такие структуры данных как записи, списки и
деревья;
• XML — это самодокументируемый формат, который описывает структуру и имена
полей так же как и значения полей;
• XML имеет строго определённый синтаксис и требования к анализу, что
позволяет ему оставаться простым, эффективным и непротиворечивым.
Одновременно с этим, разные разработчики не ограничены в выборе
экспрессивных методов (например, можно моделировать данные, помещая
значения в параметры тегов или в тело тегов, можно использовать различные
языки и нотации для именования тегов и т. д.);
• XML — формат, основанный на международных стандартах;
• Иерархическая структура XML подходит для описания практически любых типов
документов, кроме аудио и видео мультимедийных потоков, растровых
изображений, сетевых структур данных и двоичных данных;
• XML представляет собой простой текст, свободный от лицензирования и каких-
либо ограничений;
• XML не зависит от платформы;
http://www.slideshare.net/IgorShkulipa 12
Достоинства XML
• XML является подмножеством SGML (который используется с 1986 года). Уже
накоплен большой опыт работы с языком и созданы специализированные
приложения;
• XML не накладывает требований на расположение символов в строке;
• В отличие от бинарных форматов, XML содержит метаданные об именах, типах и
классах описываемых объектов, по которым приложение может обработать
документ неизвестной структуры (например, для динамического построения
интерфейсов);
• XML имеет реализации парсеров для всех современных языков
программирования;
• XML поддерживается на низком аппаратном, микропрограммном и программном
уровнях в современных аппаратных решениях.
http://www.slideshare.net/IgorShkulipa 13
Недостатки XML
• Синтаксис XML избыточен.
• Размер XML-документа существенно больше бинарного представления тех же
данных. В грубых оценках величину этого фактора принимают за 1 порядок (в
10 раз).
• Размер XML-документа существенно больше, чем документа в альтернативных
текстовых форматах передачи данных (например JSON, YAML) и особенно в
форматах данных, оптимизированных для конкретного случая использования.
• Избыточность XML может повлиять на эффективность приложения. Возрастает
стоимость хранения, обработки и передачи данных.
• XML содержит метаданные (об именах полей, классов, вложенности структур), и
одновременно XML позиционируется как язык взаимодействия открытых систем.
При передаче между системами большого количества объектов одного типа
(одной структуры), передавать метаданные повторно нет смысла, хотя они
содержатся в каждом экземпляре XML описания.
• Для большого количества задач не нужна вся мощь синтаксиса XML и можно
использовать значительно более простые и производительные решения.
• Неоднозначность моделирования.
• Нет общепринятой методологии для моделирования данных в XML, в то время
как для реляционной модели и объектно-ориентированной такие средства
разработаны и базируются на реляционной алгебре, системном подходе и
системном анализе.
http://www.slideshare.net/IgorShkulipa 14
Недостатки XML
• В природе есть множество объектов и явлений, для описания которых разные структуры
данных (сетевая, реляционная, иерархическая) являются естественными, и отображение
объекта в неестественную для него модель является болезненным для его сути. В случае с
реляционной и иерархической моделями определены процедуры декомпозиции,
обеспечивающие относительную однозначность, чего нельзя сказать о сетевой модели.
• В результате большой гибкости языка и отсутствия строгих ограничений, одна и та же
структура может быть представлена множеством способов (различными разработчиками),
например, значение может быть записано как атрибут тега или как тело тега и т. д. Например:
<a b="1" c="1"/> или <a b="1" c="1"></a> или <a><b>1</b><c>1</c></a> или <a><c
value="1"/></a> или <a><fields b="1" c="1"/></a> и т. д.
• Поддержка многих языков в именовании тегов дает возможность назвать, например вес
русским словом, в таком случае компьютер никак не сможет установить соответствия этого
поля с полем weight в англоязычной версии программы и с полями в версиях модели объекта
на множестве других языков.
• XML не содержит встроенной в язык поддержки типов данных. В нём нет строгой типизации, то
есть понятий «целых чисел», «строк», «дат», «булевых значений» и т. д.
• Иерархическая модель данных, предлагаемая XML, ограничена по сравнению с реляционной
моделью и объектно-ориентированными графами и сетевой моделью данных.
• Выражение неиерархических данных (например графов) требует дополнительных усилий.
• Кристофер Дейт, специалист в области реляционных баз данных, автор классического
учебника «An Introduction to Database Systems», отмечал, что «…XML является попыткой
заново изобрести иерархические базы данных…» (в 1980-е года иерархические базы данных
были вытеснены реляционными базами данных).
• Пространства имён XML сложно использовать и их сложно реализовывать в XML-парсерах.
• Существуют другие, обладающие сходными с XML возможностями, текстовые форматы данных,
которые обладают более высоким удобством чтения человеком (YAML, JSON, SweetXML, XF).
http://www.slideshare.net/IgorShkulipa 15
XML-компоненты в .NET
● XmlReader & XmlWriter
◦ Прездназначены для чтения-записи корректно сформированного
XML
● XmlDocument
◦ На базе модели W3C DOM с поддержкой XPath SelectNodes() и
SelectSingleNode()
● XPathNavigator
◦ Предоставляет модель XPath поверх любых данных
◦ XPathDocument (XML-данные, оптимизированные для X/Path)
● XSLTransform
◦ Предоставляет трансформации над Xpath
● XSD Compliance
◦ XmlSchema - Object Model (SOM)
◦ XmlValidatingReader
XmlReader и XmlWriter
XmlTextWriter
XmlReader XmlWriterAbstract Abstract
XmlNodeReaderXmlTextReader
http://www.slideshare.net/IgorShkulipa 17
XmlReader и XmlWriter
● XmlReader
◦ Основная схема применения:
⚫ While (reader.Read())
{ /* обработка полученных узлов */}
◦ Предоставляет последовательный (forward-only) курсор над
любыми XML-данными
◦ Реализован в XmlTextReader, XmlNodeReader
● XmlWriter
◦ Генерирует валидный XML
◦ Помогает обрабатывать пространства имен
◦ Реализован в XmlTextWriter
Пример использования XmlTextReader
XmlTextReader xr = new XmlTextReader("MyFile.Xml");
while (xr.Read()) {
switch (xr.NodeType) {
case XmlNodeType.Document:
Console.Write("<?xml version='1.0'?>");
break;
case XmlNodeType.Element:
Console.Write("<" + xr.Name+">");
break;
case XmlNodeType.SignificantWhitespace:
case XmlNodeType.Text:
Console.Write(xr.Value);
break;
case XmlNodeType.Comment:
Console.Write("<!--" + xr.Value + "-->");
break;
case XmlNodeType.ProcessingInstruction:
Console.Write("<?" + xr.Name + " " + xr.Value + "?>");
break;
case XmlNodeType.EndElement:
Console.Writeline("</" + xr.Name + ">");
}
}
Пример использования XmlWriter
public void WriteDocument(XmlWriter writer) {
writer.WriteStartDocument();
writer.WriteComment(“sample person document");
writer.WriteProcessingInstruction("hack", "on person");
writer.WriteStartElement("p", "person", "urn:person");
writer.WriteStartElement("name", "");
writer.WriteString("joebob");
writer.WriteEndElement();
writer.WriteElementInt16("age", "", 28);
writer.WriteEndElement();
writer.WriteEndDocument();
} <?xml version="1.0"?>
<!--sample person document-->
<?hack on person?>
<p:person xmlns:p="urn:person">
<name>joebob</name>
<age unit="year">28</age>
</p:person>
http://www.slideshare.net/IgorShkulipa 20
XmlDocument
Представляет XML-документ.
public class XmlDocument : XmlNode
● Предоставляет API для редактирования XML
● Расширения – Load(), Save() и обработка событий
● Свойство InnerXml (аналог innerHTML) предоставляет доступ к
внутреннему документу в древовидной структуре.
Пример XmlDocument
Пример XmlDocument. Класс формы
using System.Xml;
namespace XMLExample
{
public partial class Form1 : Form
{
private XmlDocument _xmlDoc;
public Form1()
{
InitializeComponent();
_xmlDoc = new XmlDocument();
}
Пример XmlDocument. Загрузка XML
private void button1_Click(object sender, EventArgs e)
{
_xmlDoc.Load("books.xml");
XmlNodeList nodes = _xmlDoc.GetElementsByTagName("book");
treeView1.Nodes.Clear();
foreach(XmlNode node in nodes)
{
treeView1.Nodes.Add(node.Attributes["id"].Value);
foreach (XmlNode n in node.ChildNodes)
{
treeView1.Nodes[treeView1.Nodes.Count - 1]
.Nodes.Add(n.InnerText);
}
}
treeView1.ExpandAll();
}
Пример XmlDocument. Сохранение XML
private void button3_Click(object sender, EventArgs e)
{
XmlElement newElement = _xmlDoc.CreateElement("book");
newElement.SetAttribute("id", "33333");
XmlElement elemName = _xmlDoc.CreateElement("name");
elemName.InnerText = "Kobzar";
XmlElement elemAuthor = _xmlDoc.CreateElement("author");
elemAuthor.InnerText = "Taras Shevchenko";
XmlElement elemPages = _xmlDoc.CreateElement("pages");
elemPages.InnerText = "500";
XmlElement elemYear = _xmlDoc.CreateElement("year");
elemYear.InnerText = "1840";
XmlElement elemLanguage = _xmlDoc.CreateElement("language");
elemLanguage.InnerText = "Ukrainian";
newElement.AppendChild(elemName);
newElement.AppendChild(elemAuthor);
newElement.AppendChild(elemPages);
newElement.AppendChild(elemYear);
newElement.AppendChild(elemLanguage);
_xmlDoc.DocumentElement.AppendChild(newElement);
_xmlDoc.Save("books.xml");
}
Пример XmlDocument. Файл XML
Пример XmlDocument. Результат
Пример XmlDocument. Результат
http://www.slideshare.net/IgorShkulipa 28
Лабороторная работа №9. Windows Forms + XML
Создать приложение для синхронизации файлов в разных директориях
(например, директория на жестком диске и на флеш-накопителе).
Реализовать функции (с одной и другой стороны):
• Файл изменен
• Файл удален
• Файл создан
Интерфейс приложения создать на основе архитектурного шаблона MVP с
использованием Windows Forms.
Реализовать ведение логов в виде XML. Проводить анализ необходимости
синхронизации, учитывая предыдущие изменения, записанные в XML-
логе.

More Related Content

What's hot

Methodology and software for extracting and transforming data from arbitrary ...
Methodology and software for extracting and transforming data from arbitrary ...Methodology and software for extracting and transforming data from arbitrary ...
Methodology and software for extracting and transforming data from arbitrary ...Alexey Shigarov
 
DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.mikhaelsmirnov
 
Основы баз данных
Основы баз данныхОсновы баз данных
Основы баз данныхEvgeny Smirnov
 
DBD lection 1. Intro in Database Design. In Russian.
DBD lection 1. Intro in Database Design. In Russian.DBD lection 1. Intro in Database Design. In Russian.
DBD lection 1. Intro in Database Design. In Russian.mikhaelsmirnov
 
C# Desktop. Занятие 10.
C# Desktop. Занятие 10.C# Desktop. Занятие 10.
C# Desktop. Занятие 10.Igor Shkulipa
 
О.В. Сухорослов "Распределенные хранилища данных"
О.В. Сухорослов "Распределенные хранилища данных"О.В. Сухорослов "Распределенные хранилища данных"
О.В. Сухорослов "Распределенные хранилища данных"Yandex
 

What's hot (7)

Methodology and software for extracting and transforming data from arbitrary ...
Methodology and software for extracting and transforming data from arbitrary ...Methodology and software for extracting and transforming data from arbitrary ...
Methodology and software for extracting and transforming data from arbitrary ...
 
DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.
 
Основы баз данных
Основы баз данныхОсновы баз данных
Основы баз данных
 
DBD lection 1. Intro in Database Design. In Russian.
DBD lection 1. Intro in Database Design. In Russian.DBD lection 1. Intro in Database Design. In Russian.
DBD lection 1. Intro in Database Design. In Russian.
 
Введение в DOM
Введение в DOMВведение в DOM
Введение в DOM
 
C# Desktop. Занятие 10.
C# Desktop. Занятие 10.C# Desktop. Занятие 10.
C# Desktop. Занятие 10.
 
О.В. Сухорослов "Распределенные хранилища данных"
О.В. Сухорослов "Распределенные хранилища данных"О.В. Сухорослов "Распределенные хранилища данных"
О.В. Сухорослов "Распределенные хранилища данных"
 

Viewers also liked

Viewers also liked (20)

Your Five Senses
Your Five SensesYour Five Senses
Your Five Senses
 
InPay OpenReaktor
InPay OpenReaktorInPay OpenReaktor
InPay OpenReaktor
 
Energías limpias
Energías limpiasEnergías limpias
Energías limpias
 
Print Brochure 3NM v6
Print Brochure 3NM v6Print Brochure 3NM v6
Print Brochure 3NM v6
 
C++ Базовый. Занятие 05.
C++ Базовый. Занятие 05.C++ Базовый. Занятие 05.
C++ Базовый. Занятие 05.
 
Brochure
BrochureBrochure
Brochure
 
Organists Review.compressed
Organists Review.compressedOrganists Review.compressed
Organists Review.compressed
 
assignment
assignmentassignment
assignment
 
C++ Базовый. Занятие 06.
C++ Базовый. Занятие 06.C++ Базовый. Занятие 06.
C++ Базовый. Занятие 06.
 
Amarnath_Kushwaha_SWEngg_3yrs_exp_C_C++
Amarnath_Kushwaha_SWEngg_3yrs_exp_C_C++Amarnath_Kushwaha_SWEngg_3yrs_exp_C_C++
Amarnath_Kushwaha_SWEngg_3yrs_exp_C_C++
 
Tarea6
Tarea6Tarea6
Tarea6
 
Challenge 11
Challenge 11Challenge 11
Challenge 11
 
Steffy
SteffySteffy
Steffy
 
Production diary 4
Production diary 4Production diary 4
Production diary 4
 
CONSTRUCTION DOCS_FINAL TO PRINT
CONSTRUCTION DOCS_FINAL TO PRINTCONSTRUCTION DOCS_FINAL TO PRINT
CONSTRUCTION DOCS_FINAL TO PRINT
 
Km1
Km1Km1
Km1
 
Bollywood Movie Poster
Bollywood Movie PosterBollywood Movie Poster
Bollywood Movie Poster
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.
 
Production diary 2
Production diary 2Production diary 2
Production diary 2
 
Production diary 17
Production diary 17Production diary 17
Production diary 17
 

Similar to C# Desktop. Занятие 09.

C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.Igor Shkulipa
 
Msu.Center.Lectures.J07 Advanced Xml
Msu.Center.Lectures.J07 Advanced XmlMsu.Center.Lectures.J07 Advanced Xml
Msu.Center.Lectures.J07 Advanced Xmlolegol
 
SharePoint и OpenXML
SharePoint и OpenXMLSharePoint и OpenXML
SharePoint и OpenXMLVitaly Baum
 
Java. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XMLJava. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XMLcolriot
 
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXB
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXBТехнология создания веб-сервисов на базе стандарта JAX-WS & JAXB
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXBFedor Malyshkin
 
Android - 12 - Data types
Android - 12 - Data typesAndroid - 12 - Data types
Android - 12 - Data typesNoveo
 
автоматическое построение оригинал макетов учебников как отч
автоматическое построение оригинал макетов учебников как отчавтоматическое построение оригинал макетов учебников как отч
автоматическое построение оригинал макетов учебников как отчanna_vereshchagina
 
XForms новое поколение веб-форм
XForms новое поколение веб-формXForms новое поколение веб-форм
XForms новое поколение веб-формAlexander Anokhin
 
Msu.Center.Lectures.J06 Io
Msu.Center.Lectures.J06 IoMsu.Center.Lectures.J06 Io
Msu.Center.Lectures.J06 Ioolegol
 
1. основы
1. основы1. основы
1. основыOdant
 
Data Destribution service OMG standart
Data Destribution service OMG standart Data Destribution service OMG standart
Data Destribution service OMG standart Sergei Seleznev
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Yandex
 
XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)Noveo
 
модуль 17 основы xml
модуль 17 основы xmlмодуль 17 основы xml
модуль 17 основы xmlYevgeniy Gertsen
 

Similar to C# Desktop. Занятие 09. (20)

C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.
 
XSLT - 1
XSLT - 1XSLT - 1
XSLT - 1
 
Msu.Center.Lectures.J07 Advanced Xml
Msu.Center.Lectures.J07 Advanced XmlMsu.Center.Lectures.J07 Advanced Xml
Msu.Center.Lectures.J07 Advanced Xml
 
XML
XMLXML
XML
 
SharePoint и OpenXML
SharePoint и OpenXMLSharePoint и OpenXML
SharePoint и OpenXML
 
Java. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XMLJava. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XML
 
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXB
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXBТехнология создания веб-сервисов на базе стандарта JAX-WS & JAXB
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXB
 
Android - 12 - Data types
Android - 12 - Data typesAndroid - 12 - Data types
Android - 12 - Data types
 
HTML
HTMLHTML
HTML
 
автоматическое построение оригинал макетов учебников как отч
автоматическое построение оригинал макетов учебников как отчавтоматическое построение оригинал макетов учебников как отч
автоматическое построение оригинал макетов учебников как отч
 
XForms новое поколение веб-форм
XForms новое поколение веб-формXForms новое поколение веб-форм
XForms новое поколение веб-форм
 
Html лаб 2
Html лаб 2Html лаб 2
Html лаб 2
 
Msu.Center.Lectures.J06 Io
Msu.Center.Lectures.J06 IoMsu.Center.Lectures.J06 Io
Msu.Center.Lectures.J06 Io
 
1. основы
1. основы1. основы
1. основы
 
Data Destribution service OMG standart
Data Destribution service OMG standart Data Destribution service OMG standart
Data Destribution service OMG standart
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
 
Xslt
XsltXslt
Xslt
 
XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)
 
XML
XMLXML
XML
 
модуль 17 основы xml
модуль 17 основы xmlмодуль 17 основы xml
модуль 17 основы xml
 

More from Igor Shkulipa

Общие темы. Тема 03.
Общие темы. Тема 03. Общие темы. Тема 03.
Общие темы. Тема 03. Igor Shkulipa
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.Igor Shkulipa
 
Общие темы. Тема 01.
Общие темы. Тема 01.Общие темы. Тема 01.
Общие темы. Тема 01.Igor Shkulipa
 
JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 06.JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 06.Igor Shkulipa
 
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.Igor Shkulipa
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.Igor Shkulipa
 
JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 10.JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 10.Igor Shkulipa
 
JavaScript Базовый. Занятие 05.
JavaScript Базовый. Занятие 05.JavaScript Базовый. Занятие 05.
JavaScript Базовый. Занятие 05.Igor Shkulipa
 
JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.Igor Shkulipa
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.Igor Shkulipa
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.Igor Shkulipa
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.Igor Shkulipa
 
JavaScript Базовый. Занятие 03.
JavaScript Базовый. Занятие 03.JavaScript Базовый. Занятие 03.
JavaScript Базовый. Занятие 03.Igor Shkulipa
 
JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.Igor Shkulipa
 
C# Web. Занятие 09.
C# Web. Занятие 09.C# Web. Занятие 09.
C# Web. Занятие 09.Igor Shkulipa
 
C# Web. Занятие 08.
C# Web. Занятие 08.C# Web. Занятие 08.
C# Web. Занятие 08.Igor Shkulipa
 
C# Web. Занятие 07.
C# Web. Занятие 07.C# Web. Занятие 07.
C# Web. Занятие 07.Igor Shkulipa
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.Igor Shkulipa
 
C# Web. Занятие 12.
C# Web. Занятие 12.C# Web. Занятие 12.
C# Web. Занятие 12.Igor Shkulipa
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.Igor Shkulipa
 

More from Igor Shkulipa (20)

Общие темы. Тема 03.
Общие темы. Тема 03. Общие темы. Тема 03.
Общие темы. Тема 03.
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.
 
Общие темы. Тема 01.
Общие темы. Тема 01.Общие темы. Тема 01.
Общие темы. Тема 01.
 
JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 06.JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 06.
 
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
 
JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 10.JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 10.
 
JavaScript Базовый. Занятие 05.
JavaScript Базовый. Занятие 05.JavaScript Базовый. Занятие 05.
JavaScript Базовый. Занятие 05.
 
JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.
 
JavaScript Базовый. Занятие 03.
JavaScript Базовый. Занятие 03.JavaScript Базовый. Занятие 03.
JavaScript Базовый. Занятие 03.
 
JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.
 
C# Web. Занятие 09.
C# Web. Занятие 09.C# Web. Занятие 09.
C# Web. Занятие 09.
 
C# Web. Занятие 08.
C# Web. Занятие 08.C# Web. Занятие 08.
C# Web. Занятие 08.
 
C# Web. Занятие 07.
C# Web. Занятие 07.C# Web. Занятие 07.
C# Web. Занятие 07.
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.
 
C# Web. Занятие 12.
C# Web. Занятие 12.C# Web. Занятие 12.
C# Web. Занятие 12.
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.
 

C# Desktop. Занятие 09.

  • 1. Темы лекции: Работа с XML. Практическое задание: Работа с XML. Тренер: Игорь Шкулипа, к.т.н. Платформа .Net и язык программирования C#. Занятие 9
  • 2. http://www.slideshare.net/IgorShkulipa 2 XML XML (eXtensible Markup Language, или расширяемый язык разметки) — это язык описания документов, во многом похожий на язык разметки гипертекста HTML, но гораздо более универсальный, чем HTML. XML — текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML), иногда называемых словарями. Пример: <?xml version="1.0"?> <list_of_items> <item id="1"> <first/>Первый</item> <item id="2">Второй <sub_item>подпункт 1</sub_item> </item> <last/>Последний</item> </list_of_items>
  • 3. http://www.slideshare.net/IgorShkulipa 3 Формат XML-файла Первая строка XML документа называется объявлением XML (declaration) это необязательная строка, указывающая версию стандарта XML. Здесь может быть указана кодировка символов и внешние зависимости.: <?xml version="1.0" encoding=“windows-1251"?> Далее идут элементы документа, разделенные открывающими и закрывающими тэгами. Каждый элемент имеет имя, которым начинается открывающий тэг элемента и заканчивается закрывающий. Содержимым элемента (content), называется всё, что расположено между открывающим и закрывающим тегами. Все значения атрибутов должны быть в одинарных или двойных кавычках. Каждый XML документ обязательно содержит один корневой элемент (report) и сколько угодно вложенных элементов (place, measurement). Любой вложенный элемент также может иметь свои вложенные элементы. Комментарии вводятся конструкцией: <!-- Текст комментария --> Текстовые данные в XML называются сущностью (entity). Текст может содержать спецсимволы (некоторые символы запрещены) ссылки на сущность (entity references). Кодировка спецсимволов в XML аналогична HTML: &amp; & &lt < &gt; > &apos; ' &quot; " &nbsp; пробел.
  • 4. http://www.slideshare.net/IgorShkulipa 4 В 1980-е годы был разработан - SGML (Standard Generalized Markup Language) ◦ разработан для МО США; задача - снизить расходы на передачу документации ◦ четкая иерархическая структурированность информации; ◦ расширяемость стандарта ◦ отделение информации от представления (использование DTD - Document Type Definition) ◦ слишком сложен для реализации в Web (Sounds Good, Maybe Later) Предыстория XML: SGML
  • 5. http://www.slideshare.net/IgorShkulipa 5 • Документ называется действительным, если он имеет связанное с ним определение типа документа (схему) и соответствует ему • В XML 1.0 единственным типом схем является DTD – Document Type Definition • DTD основано на упрощенном формате SGML и было создано для нужд EDI (Electronic Data Interchange) • Синтаксис DTD существенно отличается от XML Определение типа документа (DTD) <!ELEMENT Joke (Setup, Punchline) > <!ATTLIST Joke author CDATA #REQUIRED firstTold CDATA #IMPLIED > <!ELEMENT Setup (#PCDATA) > <!ELEMENT Punchline (#PCDATA) > <?xml version="1.0"?> <!DOCTYPE Joke SYSTEM "Joke.dtd"> <Joke author="Groucho Marx"> <Setup>Outside of a dog, a book is man's best friend</Setup> <Punchline>Inside of a dog, it's too dark to read.</Punchline> </Joke>
  • 6. http://www.slideshare.net/IgorShkulipa 6 Проблемы DTD ● DTD - строго иерархический формат, плохо подходящий для меняющихся документов ● У документа может быть только один тип, что не очень удобно для коммерческих приложений ● Синтаксис DTD не похож на XML и плохо воспринимается человеком ● В DTD допустимо использование только текстового типа данных (нет числового типа или даты)
  • 7. http://www.slideshare.net/IgorShkulipa 7 XML-схемы ● Схемы должны следовать синтаксису XML ● Стандарт схемы должен поддерживать распространенные типы данных (число, дата…) ● Схема XML должна быть открытой для подключения внешних источников ● Метод разрешения неоднозначности имен при соединении двух файлов - пространства имен.
  • 8. http://www.slideshare.net/IgorShkulipa 8 XML Schema XML Schema – промышленный стандарт описания XML-документов XML Schema делает следующее: • Описывает названия элементов и атрибутов (словарь). • Описывает взаимосвязь между элементами и атрибутами, а также их структуру (модель содержания). • Описывает типы данных. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="книга" type="Книга" /> <xs:complexType name="Книга"> <xs:sequence> <xs:element name="название" type="xs:string" /> <xs:element name="цена" type="xs:decimal" /> </xs:sequence> </xs:complexType> </xs:schema>
  • 9. http://www.slideshare.net/IgorShkulipa 9 Document Object Model • Объектная модель документа открывает доступ к XML-документу как к древовидной структуре в памяти • Позволяет работать с XML-документом как с обычным объектом в любом современном языке программирования • Перед началом работы DOM требует загрузки всего документа в память (поэтому разрабатываются и альтернативные стандарты) • Стандарт оставляет разработчикам большую свободу в интерпретации • Microsoft предлагает MS XML DOM 3.0, интегрированную в продукты Microsoft XPath XPath (XML Path Language) — язык запросов к элементам XML-документа. Разработан для организации доступа к частям документа XML в файлах трансформации XSLT и является стандартом консорциума W3C. XPath призван реализовать навигацию по DOM в XML
  • 10. http://www.slideshare.net/IgorShkulipa 10 XSLT XSLT (eXtensible Stylesheet Language Transformations) — язык преобразования XML-документов. Спецификация XSLT входит в состав XSL и является рекомендацией W3C. При применении таблицы стилей XSLT, состоящей из набора шаблонов, к XML-документу (исходное дерево) образуется конечное дерево, которое может быть сериализовано в виде XML-документа, XHTML-документа, HTML-документа или простого текстового файла. XSLT имеет множество различных применений, в основном в области web- программирования и генерации отчётов. Одной из задач, решаемых языком XSLT, является отделение данных от их представления, как часть общей парадигмы MVC. XQuery XQuery — язык запросов, разработанный для обработки данных в формате XML. XQuery использует XML как свою модель данных.
  • 11. http://www.slideshare.net/IgorShkulipa 11 Достоинства XML • XML — язык разметки, позволяющий отобразить двоичные данные в текст, читаемый человеком и анализируемый компьютером; • XML поддерживает Юникод; • в формате XML могут быть описаны такие структуры данных как записи, списки и деревья; • XML — это самодокументируемый формат, который описывает структуру и имена полей так же как и значения полей; • XML имеет строго определённый синтаксис и требования к анализу, что позволяет ему оставаться простым, эффективным и непротиворечивым. Одновременно с этим, разные разработчики не ограничены в выборе экспрессивных методов (например, можно моделировать данные, помещая значения в параметры тегов или в тело тегов, можно использовать различные языки и нотации для именования тегов и т. д.); • XML — формат, основанный на международных стандартах; • Иерархическая структура XML подходит для описания практически любых типов документов, кроме аудио и видео мультимедийных потоков, растровых изображений, сетевых структур данных и двоичных данных; • XML представляет собой простой текст, свободный от лицензирования и каких- либо ограничений; • XML не зависит от платформы;
  • 12. http://www.slideshare.net/IgorShkulipa 12 Достоинства XML • XML является подмножеством SGML (который используется с 1986 года). Уже накоплен большой опыт работы с языком и созданы специализированные приложения; • XML не накладывает требований на расположение символов в строке; • В отличие от бинарных форматов, XML содержит метаданные об именах, типах и классах описываемых объектов, по которым приложение может обработать документ неизвестной структуры (например, для динамического построения интерфейсов); • XML имеет реализации парсеров для всех современных языков программирования; • XML поддерживается на низком аппаратном, микропрограммном и программном уровнях в современных аппаратных решениях.
  • 13. http://www.slideshare.net/IgorShkulipa 13 Недостатки XML • Синтаксис XML избыточен. • Размер XML-документа существенно больше бинарного представления тех же данных. В грубых оценках величину этого фактора принимают за 1 порядок (в 10 раз). • Размер XML-документа существенно больше, чем документа в альтернативных текстовых форматах передачи данных (например JSON, YAML) и особенно в форматах данных, оптимизированных для конкретного случая использования. • Избыточность XML может повлиять на эффективность приложения. Возрастает стоимость хранения, обработки и передачи данных. • XML содержит метаданные (об именах полей, классов, вложенности структур), и одновременно XML позиционируется как язык взаимодействия открытых систем. При передаче между системами большого количества объектов одного типа (одной структуры), передавать метаданные повторно нет смысла, хотя они содержатся в каждом экземпляре XML описания. • Для большого количества задач не нужна вся мощь синтаксиса XML и можно использовать значительно более простые и производительные решения. • Неоднозначность моделирования. • Нет общепринятой методологии для моделирования данных в XML, в то время как для реляционной модели и объектно-ориентированной такие средства разработаны и базируются на реляционной алгебре, системном подходе и системном анализе.
  • 14. http://www.slideshare.net/IgorShkulipa 14 Недостатки XML • В природе есть множество объектов и явлений, для описания которых разные структуры данных (сетевая, реляционная, иерархическая) являются естественными, и отображение объекта в неестественную для него модель является болезненным для его сути. В случае с реляционной и иерархической моделями определены процедуры декомпозиции, обеспечивающие относительную однозначность, чего нельзя сказать о сетевой модели. • В результате большой гибкости языка и отсутствия строгих ограничений, одна и та же структура может быть представлена множеством способов (различными разработчиками), например, значение может быть записано как атрибут тега или как тело тега и т. д. Например: <a b="1" c="1"/> или <a b="1" c="1"></a> или <a><b>1</b><c>1</c></a> или <a><c value="1"/></a> или <a><fields b="1" c="1"/></a> и т. д. • Поддержка многих языков в именовании тегов дает возможность назвать, например вес русским словом, в таком случае компьютер никак не сможет установить соответствия этого поля с полем weight в англоязычной версии программы и с полями в версиях модели объекта на множестве других языков. • XML не содержит встроенной в язык поддержки типов данных. В нём нет строгой типизации, то есть понятий «целых чисел», «строк», «дат», «булевых значений» и т. д. • Иерархическая модель данных, предлагаемая XML, ограничена по сравнению с реляционной моделью и объектно-ориентированными графами и сетевой моделью данных. • Выражение неиерархических данных (например графов) требует дополнительных усилий. • Кристофер Дейт, специалист в области реляционных баз данных, автор классического учебника «An Introduction to Database Systems», отмечал, что «…XML является попыткой заново изобрести иерархические базы данных…» (в 1980-е года иерархические базы данных были вытеснены реляционными базами данных). • Пространства имён XML сложно использовать и их сложно реализовывать в XML-парсерах. • Существуют другие, обладающие сходными с XML возможностями, текстовые форматы данных, которые обладают более высоким удобством чтения человеком (YAML, JSON, SweetXML, XF).
  • 15. http://www.slideshare.net/IgorShkulipa 15 XML-компоненты в .NET ● XmlReader & XmlWriter ◦ Прездназначены для чтения-записи корректно сформированного XML ● XmlDocument ◦ На базе модели W3C DOM с поддержкой XPath SelectNodes() и SelectSingleNode() ● XPathNavigator ◦ Предоставляет модель XPath поверх любых данных ◦ XPathDocument (XML-данные, оптимизированные для X/Path) ● XSLTransform ◦ Предоставляет трансформации над Xpath ● XSD Compliance ◦ XmlSchema - Object Model (SOM) ◦ XmlValidatingReader
  • 16. XmlReader и XmlWriter XmlTextWriter XmlReader XmlWriterAbstract Abstract XmlNodeReaderXmlTextReader
  • 17. http://www.slideshare.net/IgorShkulipa 17 XmlReader и XmlWriter ● XmlReader ◦ Основная схема применения: ⚫ While (reader.Read()) { /* обработка полученных узлов */} ◦ Предоставляет последовательный (forward-only) курсор над любыми XML-данными ◦ Реализован в XmlTextReader, XmlNodeReader ● XmlWriter ◦ Генерирует валидный XML ◦ Помогает обрабатывать пространства имен ◦ Реализован в XmlTextWriter
  • 18. Пример использования XmlTextReader XmlTextReader xr = new XmlTextReader("MyFile.Xml"); while (xr.Read()) { switch (xr.NodeType) { case XmlNodeType.Document: Console.Write("<?xml version='1.0'?>"); break; case XmlNodeType.Element: Console.Write("<" + xr.Name+">"); break; case XmlNodeType.SignificantWhitespace: case XmlNodeType.Text: Console.Write(xr.Value); break; case XmlNodeType.Comment: Console.Write("<!--" + xr.Value + "-->"); break; case XmlNodeType.ProcessingInstruction: Console.Write("<?" + xr.Name + " " + xr.Value + "?>"); break; case XmlNodeType.EndElement: Console.Writeline("</" + xr.Name + ">"); } }
  • 19. Пример использования XmlWriter public void WriteDocument(XmlWriter writer) { writer.WriteStartDocument(); writer.WriteComment(“sample person document"); writer.WriteProcessingInstruction("hack", "on person"); writer.WriteStartElement("p", "person", "urn:person"); writer.WriteStartElement("name", ""); writer.WriteString("joebob"); writer.WriteEndElement(); writer.WriteElementInt16("age", "", 28); writer.WriteEndElement(); writer.WriteEndDocument(); } <?xml version="1.0"?> <!--sample person document--> <?hack on person?> <p:person xmlns:p="urn:person"> <name>joebob</name> <age unit="year">28</age> </p:person>
  • 20. http://www.slideshare.net/IgorShkulipa 20 XmlDocument Представляет XML-документ. public class XmlDocument : XmlNode ● Предоставляет API для редактирования XML ● Расширения – Load(), Save() и обработка событий ● Свойство InnerXml (аналог innerHTML) предоставляет доступ к внутреннему документу в древовидной структуре.
  • 22. Пример XmlDocument. Класс формы using System.Xml; namespace XMLExample { public partial class Form1 : Form { private XmlDocument _xmlDoc; public Form1() { InitializeComponent(); _xmlDoc = new XmlDocument(); }
  • 23. Пример XmlDocument. Загрузка XML private void button1_Click(object sender, EventArgs e) { _xmlDoc.Load("books.xml"); XmlNodeList nodes = _xmlDoc.GetElementsByTagName("book"); treeView1.Nodes.Clear(); foreach(XmlNode node in nodes) { treeView1.Nodes.Add(node.Attributes["id"].Value); foreach (XmlNode n in node.ChildNodes) { treeView1.Nodes[treeView1.Nodes.Count - 1] .Nodes.Add(n.InnerText); } } treeView1.ExpandAll(); }
  • 24. Пример XmlDocument. Сохранение XML private void button3_Click(object sender, EventArgs e) { XmlElement newElement = _xmlDoc.CreateElement("book"); newElement.SetAttribute("id", "33333"); XmlElement elemName = _xmlDoc.CreateElement("name"); elemName.InnerText = "Kobzar"; XmlElement elemAuthor = _xmlDoc.CreateElement("author"); elemAuthor.InnerText = "Taras Shevchenko"; XmlElement elemPages = _xmlDoc.CreateElement("pages"); elemPages.InnerText = "500"; XmlElement elemYear = _xmlDoc.CreateElement("year"); elemYear.InnerText = "1840"; XmlElement elemLanguage = _xmlDoc.CreateElement("language"); elemLanguage.InnerText = "Ukrainian"; newElement.AppendChild(elemName); newElement.AppendChild(elemAuthor); newElement.AppendChild(elemPages); newElement.AppendChild(elemYear); newElement.AppendChild(elemLanguage); _xmlDoc.DocumentElement.AppendChild(newElement); _xmlDoc.Save("books.xml"); }
  • 28. http://www.slideshare.net/IgorShkulipa 28 Лабороторная работа №9. Windows Forms + XML Создать приложение для синхронизации файлов в разных директориях (например, директория на жестком диске и на флеш-накопителе). Реализовать функции (с одной и другой стороны): • Файл изменен • Файл удален • Файл создан Интерфейс приложения создать на основе архитектурного шаблона MVP с использованием Windows Forms. Реализовать ведение логов в виде XML. Проводить анализ необходимости синхронизации, учитывая предыдущие изменения, записанные в XML- логе.