Создаём XML-файл

Содержание

VB. Создание XML-файлов (элементы, атрибуты, содержимое)

Создаём XML-файл

Создание XML-файлов с помощью XmlTextWriter. Запись элементов и их текстового содержимого. Запись атрибутов и их текстового содержимого. Форматирование.

XML-файлы в настоящее время используются в основном для обмена данными между приложениями, а создавать их в ‎Visual Basic‎ проще всего с помощью XmlTextWriter.

У меня XmlTextWriter применяется в коде конвертера, преобразующего информацию из EXCEL-файлов поставщиков пива в в XML-файлы для загрузки в программу «Декларант-Алко».

Далее простые примеры, как создавать XML-файлы с помощью XmlTextWriter, добавлять элементы, атрибуты и их текстовое содержимое.

Пример 1. Создание Xml-файла, запись элементов и их текстового содержимого

Создадим Xml-файл и запишем в него информацию из таблицы «Работники» следующим образом: имя таблицы как элемент первого уровня, наименование должности работника как элемент второго уровня, а табличные значения ФИО как текстовое содержимое элемента второго уровня:

Работники

ДолжностьФИО
ДворникИванов И.И.
ИнженерПетров П.П.

'Создаем новый экземпляр XmlTextWriter с указанием полного имени файла и кодировки, 'файл с таким именем будет создан, а если он существует, то перезаписан Dim myWriter = New Xml.XmlTextWriter(“D:\test1.xml”, System.Text.Encoding.UTF8) With myWriter 'Записываем объявление XML с номером версии 1.0 .WriteStartDocument() 'Записываем открывающий тег первого элемента .WriteStartElement(“Работники”) 'Записываем открывающий тег первого вложенного элемента .WriteStartElement(“Дворник”) 'Записываем текстовое содержимое элемента .WriteString(“Иванов И.И.”) 'Записываем закрывающий тег первого вложенного элемента .WriteEndElement() 'Записываем открывающий тег второго вложенного элемента .WriteStartElement(“Инженер”) 'Записываем текстовое содержимое элемента .WriteString(“Петров П.П.”) 'Закрывающий тег второго вложенного элемента '.WriteEndElement() 'Закрывающий тег первого элемента '.WriteEndElement() 'Закрываем все незакрытые элементы и атрибуты .WriteEndDocument() 'Закрываем экземпляр XmlTextWriter .Close() 'Если в этой же процедуре создается еще Xml-файл, то уже объявленной 'переменной myWriter присваивается новый экземпляр XmlTextWriter, например: 'MyWriter = New Xml.XmlTextWriter(“D:\test2.xml”, System.Text.Encoding.UTF8) End With MsgBox(“Процесс записи завершен!”)

Две команды «.WriteEndElement()» закомментированы, так как их выполняет метод «.WriteEndDocument()», который закрывает все незакрытые элементы и атрибуты (стоит отметить, если не записать закрывающий тег первого вложенного элемента, то второй вложенный элемент откроется как элемент третьего уровня).

Результат выполнения кода примера 1:

‹?xml version=”1.0″ encoding=”UTF-8″?› ‹Работники› ‹Дворник›Иванов И.И.‹/Дворник› ‹Инженер›Петров П.П.‹/Инженер› ‹/Работники›

Пример 2. Создание Xml-файла, запись элементов, атрибутов и их текстового содержимого

Создадим Xml-файл и запишем имя таблицы как элемент первого уровня, наименование должности работника как элемент второго уровня, названия граф («Фамилия», «Имя» и «Отчество») как атрибуты элемента «Наименование должности», а табличные значения ФИО как текстовое содержимое атрибутов:

Работники

ДолжностьФамилияИмяОтчество
ДворникИвановИванИванович
ИнженерПетровПетрПетрович

Dim myWriter = New Xml.XmlTextWriter(“D:\test2.xml”, System.Text.Encoding.UTF8) With myWriter .WriteStartDocument() .WriteStartElement(“Работники”) 'Записываем открывающий тег первого вложенного элемента .WriteStartElement(“Дворник”) 'Записываем первый атрибут первого вложенного элемента .WriteStartAttribute(“Фамилия”) 'Записываем текстовое содержимое атрибута .WriteString(“Иванов”) 'Записываем второй атрибут первого вложенного элемента .WriteStartAttribute(“Имя”) 'Записываем текстовое содержимое атрибута .WriteString(“Иван”) 'Записываем третий атрибут первого вложенного элемента .WriteStartAttribute(“Отчество”) 'Записываем текстовое содержимое атрибута .WriteString(“Иванович”) 'Записываем закрывающий тег первого вложенного элемента .WriteEndElement() 'Записываем открывающий тег второго вложенного элемента .WriteStartElement(“Инженер”) 'Записываем первый атрибут второго вложенного элемента .WriteStartAttribute(“Фамилия”) 'Записываем текстовое содержимое атрибута .WriteString(“Петров”) 'Записываем второй атрибут второго вложенного элемента .WriteStartAttribute(“Имя”) 'Записываем текстовое содержимое атрибута .WriteString(“Петр”) 'Записываем третий атрибут второго вложенного элемента .WriteStartAttribute(“Отчество”) 'Записываем текстовое содержимое атрибута .WriteString(“Петрович”) 'Закрываем все незакрытые элементы и атрибуты .WriteEndDocument() .Close() End With MsgBox(“Процесс записи завершен!”)

Результат выполнения кода примера 2:

‹?xml version=”1.0″ encoding=”UTF-8″?› ‹Работники› ‹Дворник Фамилия=”Иванов” Имя=”Иван” Отчество=”Иванович”/› ‹Инженер Фамилия=”Петров” Имя=”Петр” Отчество=”Петрович”/› ‹/Работники›

Пример 3

Запишем имя таблицы как элемент первого уровня, слово «Работник» как элемент второго уровня, «id» и «ФИО» как атрибуты элемента «Работник», «Год_рождения», «Паспорт» и «Должность» как вложенные элементы третьего уровня, «серия» и «номер» как атрибуты элемента «Паспорт», а также применим форматирование к документу XML:

Работники

IdработникаФИОГод_рожденияПаспортДолжность
серияномер
1Иванов И.И.195622 22222222дворник
2Петров П.П.196733 33333333инженер

Dim myWriter = New Xml.XmlTextWriter(“D:\test3.xml”, System.Text.Encoding.UTF8) With myWriter .WriteStartDocument() 'Указываем, что XML-документ должен быть отформатирован .Formatting = Xml.Formatting.Indented 'Задаем 2 пробела для выделения вложенных данных .Indentation = 2 .WriteStartElement(“Работники”) .WriteStartElement(“Работник”) .WriteStartAttribute(“id”) .WriteString(“1”) .WriteStartAttribute(“ФИО”) .WriteString(“Иванов И.И.”) .WriteStartElement(“Год_рождения”) .WriteString(“1956”) .WriteEndElement() .WriteStartElement(“Паспорт”) .WriteStartAttribute(“серия”) .WriteString(“22 22”) .WriteStartAttribute(“номер”) .WriteString(“222222”) .WriteEndElement() .WriteStartElement(“Должность”) .WriteString(“дворник”) .WriteEndElement() .WriteEndElement() .WriteStartElement(“Работник”) .WriteStartAttribute(“id”) .WriteString(“2”) .WriteStartAttribute(“ФИО”) .WriteString(“Петров П.П.”) .WriteStartElement(“Год_рождения”) .WriteString(“1967”) .WriteEndElement() .WriteStartElement(“Паспорт”) .WriteStartAttribute(“серия”) .WriteString(“33 33”) .WriteStartAttribute(“номер”) .WriteString(“333333”) .WriteEndElement() .WriteStartElement(“Должность”) .WriteString(“инженер”) .WriteEndDocument() .Close() End With MsgBox(“Процесс записи завершен!”)

Результат выполнения кода примера 3:

‹?xml version=”1.0″ encoding=”UTF-8″?› ‹Работники› ‹Работник id=”1″ ФИО=”Иванов И.И.”› ‹Год_рождения›1956‹/Год_рождения› ‹Паспорт серия=”22 22″ номер=”222222″/› ‹Должность›дворник‹/Должность› ‹/Работник› ‹Работник id=”2″ ФИО=”Петров П.П.”› ‹Год_рождения›1967‹/Год_рождения› ‹Паспорт серия=”33 33″ номер=”333333″/› ‹Должность›инженер‹/Должность› ‹/Работник› ‹/Работники›

1. При открытии XML-файлов из примеров 1 и 2 в текстовом редакторе, их код будет расположен в одной строке, а отформатированный код из примера 3 отобразится в текстовом редакторе так же, как и в браузере.

2. Атрибуты, в зависимости от программы, могут отображаться не в том порядке, как записаны в исходном XML-файле. При тестировании в Google Chrome, Notepad++ последовательность оказалась та же, что и в примерах, а в Internet Explorer 10 атрибуты отобразились в обратном порядке.

Источник: https://vremya-ne-zhdet.ru/vb/sozdaniye-xml-fayla-s-pomoshchyu-xmltextwriter/

Основы XML для начинающих пользователей

Создаём XML-файл

Введение в правильную разметку

Кей Уэйтли
02.06.2017

XML означает Extensible Markup Language, с акцентом на markup (разметка). Вы можете создавать текст и размечать его при помощи обрамляющих тегов, превращая каждое слово, предложение или фрагмент в идентифицируемую, сортируемую информацию.

Создаваемые вами файлы, или экземпляры документа, состоят из элементов (тегов) и текста, причем элементы помогают правильно понимать документ при чтении на бумаге или даже обрабатывать его в электронном виде. Чем больше описательных элементов, тем больше частей документа можно идентифицировать.

С первых дней существования разметки одно из ее преимуществ заключается в том, что в случае потери компьютерной системы распечатанные данные все равно остаются читабельными благодаря тегам.

Языки разметки прошли путь от первых форм, создаваашихся компаниями и госучреждениями, до Стандартного языка обобщенной разметки (Standard Generalized Markup Language – SGML), Гипертекстового языка разметки (Hypertext Markup Language – HTML) и в конечном итоге до XML. SGML может показаться сложным, а HTML (который, по сути, сначала был просто набором элементов) оказался недостаточно мощным для идентификации информации. XML разрабатывался как простой в применении и удобный для расширения язык разметки.

В XML можно создавать свои собственные элементы, что позволяет точно представлять фрагменты данных. Документы можно не просто разделять на абзацы и заголовки, но и выделять любые фрагменты внутри документа.

Чтобы это было эффективно, нужно определить конечный перечень своих элементов и придерживаться его. Элементы можно определять в Описании типа документа (Document Type Definition – DTD) или в схеме, что будет кратко обсуждено ниже.

Когда вы освоите и начнете использовать XML, не бойтесь экспериментировать с именами элементов, создавая реальные файлы.

Построение документа XML

Как уже упоминалось, файлы XML состоят из текста и разметки. Большая часть текста помещается в элементы, в которых текст окружен тегами. Например, допустим, нужно создать поваренную книгу в формате XML.

У нас есть рецепт под названием Ice Cream Sundae, который нужно преобразовать в XML. Чтобы разметить название рецепта, заключим его текст в элемент, который начинается и заканчивается тегами. Этот элемент можно назвать recipename.

Чтобы отметить начальный тег элемента, поместим его имя в угловые скобки ), вот так: . Затем введем текст Ice Cream Sundae.

После текста поставим замыкающий тег, который представляет собой имя элемента в угловых скобках, плюс косая черта завершения элемента (/) перед именем элемента, вот так: . Эти теги образуют элемент, в который можно вводить текст и даже другие элементы.

Имена элементов можно создавать как для отдельных документов, так и для групп документов. В соответствии с вашими требованиями можно указать правила, которые должны соблюдаться для элементов.

Элементы могут быть строго специальными или достаточно общими. Правила должны также определять, что допустимо включать в каждый элемент. Они могут быть строгими, свободными или промежуточными.

Просто создайте элементы, определяющие те части вашего документа, которые, на ваш взгляд, важны.

Начало создания файла XML

Первой строкой документа XML может быть декларация XML. Эта необязательная часть файла определяет его как файл XML, что может помочь автоматическим инструментам и людям распознавать файл как XML, а не SGML или другой способ разметки.

Декларация может выглядеть просто как или включать версию XML () и даже кодировку символов, например, для Unicode. Поскольку эта декларация должна находиться в самом начале файла, если вы планируете комбинировать мелкие XML-файлы в более крупный файл, этот необязательный элемент лучше пропустить.

Создание корневого элемента

Начальный и замыкающий теги корневого элемента окружают весь текст XML-документа. В файле должен присутствовать только один корневой элемент, и это необходимая “обложка” для него. В листинге 1 показан фрагмент примера, который я здесь использую, с корневым элементом (рецепт). (Полный файл XML приведен в Загрузках.)

Листинг 1. Корневой элемент

По мере создания своего документа вы будете размещать текст и дополнительные теги между и .

Наименования элементов

При создании XML регистры начального и конечного тегов должны совпадать. В противном случае можно получить сообщение об ошибке при использовании или просмотре XML. Например, Internet Explorer не отображает текст в случае несовпадения регистров. Вместо этого он выводит сообщения о несовпадении начального и конечного тегов.

Итак, у нас есть корневой элемент . В XML сначала выбираются имена элементов, а затем на основе этих имен определяется соответствующее описание DTD или схема. Имена могут содержать буквы, цифры и специальные знаки, такие как знак подчеркивания (_). Вот несколько правил об именах, которые нужно помнить:

  • Пробелы в именах элементов не допускаются.
  • Имена должны начинаться с буквы, а не с цифры или знака. (После этой первой буквы можно использовать любую комбинацию из букв, цифр и допустимых символов.)
  • Регистр не имеет значения, но во избежание путаницы соблюдайте его.

В предыдущем примере, если мы добавили элемент с именем , то его начальным тегом должен быть , а соответствующим замыкающим тегом —.

Листинг 2. Другие элементы

Ice Cream Sundae5 minutes

XML-документ может содержать пустые теги, внутри которых ничего нет и которые могут выражаться одним тегом, а не парой из открывающего и замыкающего тегов.

Например, это может быть самостоятельный тег в стиле HTML .

Он не содержит никаких дочерних элементов или текста, так что это пустой элемент, и его можно записать как (с пробелом и знакомой замыкающей косой чертой в конце).

Вложение элементов

Вложение— это размещение элементов внутри других элементов. Эти новые элементы называются дочерними элементами, а элементы, которые их окружают, — их родительскими элементами.

В листинге 3 в корневой элемент вложено несколько элементов. Это вложенные дочерние элементы , и . Внутри элемента находится несколько одинаковых дочерних элементов .

Вложение может делать XML-документ многоуровневым.

Типичная синтаксическая ошибка связана с вложенностью родительского и дочернего элементов. Каждый дочерний элемент должен быть целиком расположен между открывающим и замыкающим тегами своего родительского элемента. Дочерние элементы должны заканчиваться до начала следующего дочернего элемента.

Пример правильного вложения приведен в Листинге 3. Теги начинаются и завершаются без переплетения с другими тегами.

Листинг 3. Правильное вложение элементов XML

Ice Cream Sundae3chocolate syrup or chocolate fudge1nuts1cherry5 minutes

К элементам иногда добавляются Атрибуты. Атрибуты состоят из пары имя-значение, где значение берется в двойные кавычки (“), вот так: type=”dessert”. Атрибуты позволяют сохранять вместе с элементом дополнительные параметры, меняя значения этих параметров от элемента к элементу в одном и том же документе.

Атрибут —или даже несколько атрибутов —указывается внутри начального тега элемента: . При добавлении нескольких атрибутов они разделяются пробелами: . В листинге 4 показан файл XML, как он выглядит теперь.

Листинг 4. Наш файл XML с элементами и атрибутами

Ice Cream Sundae5 minutes

Можно использовать любое количество атрибутов. Подумайте, какие подробности можно добавить в ваш документ. Атрибуты особенно полезны, если документы будут храниться —например, по типу рецептов. Имена атрибутов могут содержать такие же символы, что и имена элементов, с теми же правилами исключения пробелов и начала имени с буквы.

Правильно и неправильно построенный XML

Если вы следуете правилам, определенным в вашей структуре, вы сможете легко создавать правильно построенный код XML. Правильный XML— это код XML, составленный с соблюдением всех правил XML: правильное именование элементов, вложение, именование атрибутов и т.п.

В зависимости от того, что именно вы делаете с XML, вам может понадобиться работа с правильно построенным XML. Рассмотрим приведенный выше пример сортировки по типу рецептов. Нужно, чтобы элементы содержали атрибут type. Очень важно иметь возможность успешно проверить код и гарантировать постоянное присутствие значения этого атрибута.

Под проверкой (validation) понимается проверка структуры документа на соответствие установленным для нее правилам и определению дочерних элементов для каждого родительского элемента. Эти правила определяются в Описании типа документа (DTD) или в схеме. Для такой проверки требуется создать DTD или схему, а затем давать ссылку на файл DTD или схемы в своих XML-файлах.

Чтобы разрешить проверку, нужно ближе к началу своих XML-документов поместить декларацию типа документа ( DOCTYPE). Эта строка содержит ссылку на DTD или схему (перечень элементов и правил), которая будет использоваться для проверки данного документа. Строка DOCTYPE может быть примерно такой, как в листинге 5.

Листинг 5. DOCTYPE

Этот пример означает, что ваш файл списка элементов с именем filename.dtd находится в вашем компьютере (то есть в каталоге SYSTEM, а не в общем каталоге PUBLIC).

Использование сущностей

Сущности (entity)могут представлять собой фрагменты текста или специальные символы. Они могут указываться внутри документа или вне его. Во избежание ошибок и для правильности отображения сущности должны быть надлежащим образом объявлены и выражены.

Нельзя вводить специальные символы прямо в текст. Для использования в тексте специальных символов их нужно сделать сущностями и использовать коды этих символов. В качестве сущностей можно определить фразы, такие как название компании, а затем использовать их по всему тексту.

Чтобы создать сущность, назначьте ей имя и вставляйте это имя и вставляйте это имя в текст после знака амперсанда (&) и заканчивая точкой с запятой — например, &coname; (или другое имя). Затем укажите этот код в своей строке DOCTYPE в квадратных скобках([]), как в листинге 6.

Этот код определяет текст, который подставляется вместо сущности.

Листинг 6. Сущность

Использование сущностей помогает избежать многократного повторения одной и той же фразы или информации. Оно может также облегчить редактирование текста (например, если компания изменит название) сразу во многих местах с помощью простой настройки строки определения сущности.

Как избежать ошибок

Пока вы учитесь создавать XML-файлы, открывайте их в редакторе XML, чтобы удостовериться в их формальной правильности и убедиться, что правила XML соблюдены.

Например, если у вас Windows® Internet Explorer®, вы можете просто открыть свой файл XML в браузере. Если ваши элементы, атрибуты и текст отображаются, значит файл XML составлен правильно.

Если же присутствуют ошибки, вероятно, вы что-то напутали в синтаксисе, и вам нужно тщательно проверить свой документ на опечатки или пропуски тегов и знаков пунктуации.

Как упоминалось в разделе Вложение элементов, элемент, содержащий другой элемент, называетя родителем этого вложенного элемента. В приведенном ниже примере является корневым элементом и содержит весь текст файла.

В этот родительский элемент вложены дочерние элементы , , и другие. Такая структура делает , и дочерними элементами. Не забывайте правильно вкладывать эти дочерние элементы.

В листинге 7 приведен пример правильно построенного XML-документа с правильным вложением элементов.

Листинг 7. Правильно построенный документ XML

Ice Cream Sundae0.5vanilla ice cream3chocolate syrup or chocolate fudge1nuts1cherry1bowl1spoons1ice cream scoopUsing ice cream scoop, place vanilla ice cream into bowl.Drizzle chocolate syrup or chocolate fudge over the ice cream.

Sprinkle nuts over the mound of chocolate and ice cream.Place cherry on top of mound with stem pointing upward.Serve.Replace nuts with raisins.Use chocolate ice cream instead of vanilla ice cream.

5 minutes

Примечание: Разрывы строк облегчают чтение кода, не влияют на сам XML.

Можно поэкспериментировать с тестовыми файлами и подвигать начальные и конечные теги, чтобы познакомиться с сообщениями об ошибках.

Проверка XML

На рисунке 1 показан XML-документ, элементы которого отображаются без сбоев в Internet Explorer. Текст обрамляют открывающий и замыкающий теги. Рядом с родительскими элементами расположены значки плюс (+) и минус(-), которые позволяют убрать внутрь элементов все вложенные в них элементы (их потомков).

Рисунок 1. Пример файла XML со свернутыми потомками

Кликните, чтобы увидеть увеличенное изображение

Усвоив несколько простых правил, вы можете гибко разрабатывать собственные элементы XML и их атрибуты. Правила XML не сложны. Набирать XML-документ тоже несложно. Главное – понять, что вы хотите от документов в смысле возможностей сортировки и поиска, а затем разработать элементы и атрибуты для удовлетворения этих требований.

Когда хорошо понимаешь цель и знаешь, как разметить свой текст, можно создавать эффективные элементы и атрибуты. С этой точки зрения тщательная разметка — это все, что нужно для создания правильно построенного и пригодного к использованию документа XML.

Ресурсы для скачивания

Источник: https://www.ibm.com/developerworks/ru/library/x-newxml/

Создание и чтение XML-файла C#

Создаём XML-файл

В данном уроке будет рассмотрена работа с XML на языке C#, в частности, создание простого XML-файла и его чтение в Windows Forms и в консольном приложении Visual Studio.

Что такое XML?

XML –  это так называемый язык разметки, который используется для представления иерархических данных и структиуривания передаваемой информации в удобной для программ, приложений и различных систем форме. XML универсален и не зависит от платформы, на которой используется.

Как и у любого языка, у него есть свой собственный (но довольно несложный) синтаксис, представленный в основном в виде различных тегов.

Внешне он несколько похож на язык гипертекстовой разметки HTML, но если HTML используется для разметки страниц и отображения данных на них, то XML используется для структурирования данных, их сортировки, фильтрации и т.п. Можно даже приписать XML к аналогу баз данных, который не требует СУБД.

В особенности XML-файлы хороши в представлении древовидных (иерархических) БД с произвольной длинной ветвей. В большинстве современных реляционных БД реализация подобной структуры далеко не всегда бывает эффективной и удобной, в особенности, когда длина ветвей доходит до десятков элементов.

Ко всему прочему, XML-документ довольно легко создать, для этого не нужно иметь никаких особенных программ и специфического ПО. В самом простом случае можно обойтись даже стандартной программой “Блокнот”.

А при наличии Visual Studio, предпочтительнее воспользоваться им, так как работа с XML-файлами в нём очень удобна и проста.

Кроме того, есть возможность заполнить XML-файл программно, используя, например, консольное приложение Visual Studio.

Как создать XML-файл в Visual Studio вручную

Для начала попробуем создать простенький XML-файл вручную в Visual Studio и в блокноте.

Чтобы создать пустой XML-документ в Visual Studio, следует в окне программы нажать вкладку “Файл”, а затем выбрать строки “Создать” и “Файл”, как показано на скриншоте:

Затем в появившемся окне следует выбрать “XML-файл” и нажать кнопку “Открыть”.

Вот и всё, XML-документ создан. Изначально в нём записана лишь одна строка:

Как легко понять, она означает, что созданный файл поддерживает язык XML версии 1.0 и работает с кодировкой UTF-8.

Теперь давайте запишем в него какие-нибудь данные. Например, такие:

30 True

      True

Теги в XML можно именовать так, как удобно пользователю, что сильно упрощает визуализацию XML-файлов для людей. В данном примере у нас имеются иерархические данные в три ступени. Сначала идёт структура каталога, обозначенная тегами .

В неё вложен каталог с названием Employee и атрибутом name, которому присвоено значение “Ivan Ivanov”. А в этот каталог вложены данные Age и Programmer. Иными словами, у нас теперь в корне структуры данных имеется некоторый сотрудник Иван Иванов, которому 30 лет и который является программистом.

Таких сотрудников может быть очень много, как может быть много и атрибутов этих сотрудников, а также атрибутов у атрибутов этих сотрудников и даже атрибутов у атрибутов у атрибутов этих сотрудников.
Примерно так и выглядят XML-файлы. Данный способ создания XML-файла довольно прост и удобен в применении.

Если же под рукой не оказалось Visual Studio или другой специализированной программы, то можно обойтись и простым блокнотом.

Как создать XML-файл в блокноте

Создавать какие-либо большие и объемные XML-файлы в блокноте будет довольно затруднительно, есть возможность запутаться и ошибиться во всём обилии тегов и данных, однако создать простенькую базу вполне возможно. Для этого надо лишь открыть Блокнот и просто начать писать. Например, ту же структуру, что и выше:

В принципе, можно обойтись и без строки о версии XML-языка и без присваивания кодировки, которая создавалась автоматически в примере с Visual Studio выше, но лучше будет записать и её. Чтобы сохранить данный файл правильно, надо при сохранении выбрать “Тип файла” – Все файлы, а к имени файла прибавить расширение .xml. Кроме того, стоит выбрать кодировку “UTF-8″.

Таким образом и создаются XML-файлы вручную.

Как читать XML-файл C#

Давайте попробуем создать программу, которая считывала бы данные из какого-нибудь XML-файла. Мы будем использовать Windows Forms и язык C#.

В конце у нас должно получиться что-то вроде этого:

Но пока что мы создаем проект Windows Forms. Для начала нам нужен сам XML-файл, из-за которого мы и будем делать программу. Давайте создадим его. Для этого щёлкаем  правой кнопкой мыши на проект в обозревателе решений и выбираем строки “Добавить” и “Создать элемент”.

Там мы выбираем XML-файл и называем его.

Файл создан, теперь надо его заполнить, например так, как показано ниже:

После этого следует в обозревателе решений щёлкнуть на наш файл и в его свойствах изменить значение в вкладке “Копировать в выходной каталог” на “Всегда копировать”, как показано ниже. Это нужно для того, чтобы данные из файла выводились пользователю через программу, т.к. позже будет создан каталог для этих целей.

Итак, наш XML-файл готов. Преступаем к программе.

Для внешней начинки Form1 нам понадобится элемент propertyGrid и ListBox:

В propertyGrid мы отключили HelpVisible:

Теперь нам надо создать класс, который будет получать данные из нашего файла. Для создания класса надо правой кнопкой мыши щёлкнуть на проект и выбрать “Добавить” “Класс”.

Называем наш класс как-нибудь, например, Employee и нажимаем кнопку “Добавить”.

Затем пишем следующее:

class Employee { public string Name { get; private set; } public int Age { get; private set; } public bool Programmer { get; private set; }

        public string Name { get; private set; }        public int Age { get; private set; }        public bool Programmer { get; private set; }

Таким образом мы инициализируем свойства, которые будем получать из файла. Для нас это строковая переменная Name, целочисленная Age и логический тип Programmer.

В свойствах мы указываем два метода – get (метод для получения данных) и set (метод для чтения данных).

Запись { get; private set; } указывает, что данное свойство используется только для чтения данных, но не для их записи.

Далее создаем конструктор экземпляра:

public Employee(string name, int age, bool programmer) { Name = name; Age = age; Programmer = programmer; } public override string ToString() { return Name; } }

     public Employee(string name, int age, bool programmer)        public override string ToString()

Здесь мы присваиваем считанные выше значения новым переменным и возвращаем переменную Name – её значения будут выводиться в ListBox’e.

В классе Employee мы настроили всё, что нам необходимо. Теперь свяжем все части воедино через Form1. Переходим к коду формы.

Для начала нам надо создать метод LoadEmployees, который будет загружать данные из XML-документа и через класс Employee выводить полученные данные в ListBox.

Как мы помним, из класса Employee возвращается переменная Name, поэтому в ListBox’e у нас и будут выводиться только имена сотрудников, а остальные атрибуты мы выведем в propertyGrid’e.
Сначала нам надо подключить директиву

Именно она помогает работать с XML.

Далее создадим сам метод:

private void LoadEmployees() { XmlDocument doc = new XmlDocument(); doc.Load(“xmltext.xml”); foreach(XmlNode node in doc.DocumentElement) { string name = node.Attributes[0].Value; int age = int.Parse(node[“Age”].InnerText); bool programmer = bool.Parse(node[“Programmer”].InnerText); listBox1.Items.Add(new Employee(name, age, programmer)); } }

  private void LoadEmployees()            XmlDocument doc = new XmlDocument();            foreach(XmlNode node in doc.DocumentElement)                string name = node.Attributes[0].Value;                int age = int.Parse(node[“Age”].InnerText);                bool programmer = bool.Parse(node[“Programmer”].InnerText);                listBox1.Items.Add(new Employee(name, age, programmer));

Класс XmlDocument указывает на то, что переменная doc будет являться файлом с XML-кодом.

doc.Load, как можно догадаться, указывает на то, что в doc будет загружен XML-файл с именем “xmltext.xml” – это и есть наш файл, который мы создали в самом начале.

Оператор foreach нужен для циклического обращения к элементам коллекции данных, которая в нашем случае представлена базой сотрудников.

Запись в скобках этого оператора, грубо говоря, указывает на то, что каждый конкретный узел в нашем файле представлен XML кодом, и именно так его и надо представлять программе.

Далее считываются имя, возраст и причастность к должности программиста. Все данные заносятся по позициям в ListBox.

Для того, чтобы данный метод запускался одновременно с запуском программы, надо добавить запись LoadEmployees() в область кода, показанного ниже:

public Form1() { InitializeComponent(); LoadEmployees(); }

Теперь нам надо сделать так, чтобы при выборе имени в ListBox’e, все данные, включая имя, возраст и определение, является ли человек программистом, выводились в propertyGrid’e. Для этого дважды щёлкаем левой кнопкой мыши на ListBox’e в форме и в появившемся блоке кода пишем:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { if (listBox1.SelectedIndex != -1) { propertyGrid1.SelectedObject = listBox1.SelectedItem; } }

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)            if (listBox1.SelectedIndex != -1)                propertyGrid1.SelectedObject = listBox1.SelectedItem;

Запись  if (listBox1.SelectedIndex != -1) означает, что если в ListBox’e выбран какой-либо элемент, а в нашем случае, имя сотрудника (элементы в нём нумеруются с нуля: 0,1,2,3 и т.д., -1 означает, что не выбран ни один элемент), то в propertyGrid’e должны вывестись элементы, которые закреплены в ListBox’e за конкретным именем.

Наша программа готова. Исходник программы “Чтение XML файла” на C# можно скачать по ссылке ниже:

Скачать исходник

Источник: https://vscode.ru/prog-lessons/sozdanie_chtenie-xml-c-sharp.html

Создание XML документов с помощью TXMLDocument

Создаём XML-файл

В статье посвящённой разбору XML документов при помощи TXMLDocument уже упоминалось о том, что данный компонент способен не только разбирать, но и создавать XML документы. Рассмотрим процесс создания XML более подробно.

Постановка задачи

В качестве примера возьмём XML документ с более сложной структурой, чем был приведён в вышеупомянутой статье.

Example Begin Body Item1 Item2 Item3 End

    Begin    End

При этом положим, что количество дочерних узлов у узла array неограниченно, а атрибуты attr и tag узлов node2 и node4 соответственно изначально имеют числовой формат.

Реализация

Попробуем сформировать подобный XML документ в Delphi.

Для создания узлов XML служит метод AddChild. В данном случае, лучше всего подходит его перегрузка, которая принимает только имя узла.

Вначале создадим корневой узел.

var RootNode: IXMLNode; . . . begin . . . XMLDocument.Active:=true; RootNode := XMLDocument.AddChild('main');

  XMLDocument.Active:=true;  RootNode := XMLDocument.AddChild('main');

Так как метод AddChild возвращает элемент IXMLNode, заполнять значения во вновь создаваемых узлах можно сразу же в процессе создания, как показано ниже.

RootNode.AddChild('node1').Text:=node1Edit.Text;

RootNode.AddChild('node1').Text:=node1Edit.Text;

К сожалению, этот способ не подходит, если узел имеет атрибуты. В этом случае потребуется вспомогательная переменная.

var ChildNode: IXMLNode; begin . . . ChildNode := RootNode.AddChild('node2');

ChildNode := RootNode.AddChild('node2');

Или оператор with.

with RootNode.AddChild('node2') do begin Text := node2Edit.Text; Attributes['attr'] := attrUpDown.Position; end;

with RootNode.AddChild('node2') do  Attributes['attr'] := attrUpDown.Position;

В результате будет полностью сформирован узел node2.

Узел node3 имеет значительно более сложную структуру. Помимо собственного значения, он содержит дочерний узел, который в свою очередь включает ещё ряд однотипных узлов (по сути, является массивом).

Однако, несмотря на громоздкую «конструкцию» узел node3 можно легко сформировать, используя вложенный оператор with.

with RootNode.AddChild('node3') do begin Text := node3Edit.Text; with AddChild('array') do for i := 0 to Memo.Lines.Count – 1 do AddChild('item').Text := Memo.Lines[i]; end;

with RootNode.AddChild('node3') do  with AddChild('array') do    for i := 0 to Memo.Lines.Count – 1 do      AddChild('item').Text := Memo.Lines[i];

Подобным образом можно создавать узлы любой степени вложенности, а также заполнять их значения и атрибуты.

Узел node4 создаём полностью по аналогии с узлом node2.

with RootNode.AddChild('node4') do begin Text := node4Edit.Text; Attributes['str']:=strEdit.Text; Attributes['tag'] := tagUpDown.Position; end;

with RootNode.AddChild('node4') do  Attributes['str']:=strEdit.Text;  Attributes['tag'] := tagUpDown.Position;

Теперь, когда XML документ полностью сформирован, остаётся только сохранить его в файл.

XMLDocument.SaveToFile('finished_sample.xml');

XMLDocument.SaveToFile('finished_sample.xml');

Ниже показан скриншот программы, которая формирует данный XML документ.

Результат её работы.

Самый 1й узел Следующий узел Самый сложный узел во всём XML документе Строка 1 Строка 2 Строка 3 Добавим 4ю строку Пусть будет и 5я 4й узел XML документа

    Самый 1й узел    Следующий узел    Самый сложный узел во всём XML документе            Добавим 4ю строку            Пусть будет и 5я    4й узел XML документа

Очевидно, что по своей сложности создание XML документа при помощи компонента TXMLDocument практически не отличается от процесса разбора. Также необходимый функционал в обоих случаях достаточно удобен. Поэтому, данный компонент прекрасно подходит для решения почти любых задач связанных с обработкой XML.

Источник: http://streletzcoder.ru/sozdanie-xml-dokumentov-s-pomoshhyu-txmldocument/

Как сделать файл xml из word?

Создаём XML-файл

XML-формат предназначен для хранения данных, которые могут пригодиться в работе некоторых программ, сайтов и поддержки определённых языков разметки. Создать и открыть файл с таким форматом не сложно. Это вполне можно сделать, даже если на компьютере не установлено какое-либо специализированное программное обеспечение.

Немного об XML

Сам по себе XML — это язык разметки, чем-то похожий на HTML, который используется на веб-страницах. Но если последний применяется только для вывода информации и её правильной разметки, то XML позволяет её структурировать определённым образом, что делает этот язык чем-то похожим на аналог базы данных, который не требует наличия СУБД.

Создавать XML-файлы можно как при помощи специализированных программ, так и встроенным в Windows текстовым редактором. От вида используемого ПО зависит удобство написания кода и уровень его функциональности.

Способ 1: Visual Studio

Вместо этого редактора кода от Microsoft можно использовать любой его аналог от других разработчиков. По факту Visual Studio является более расширенной версией обычного «Блокнота». Код теперь имеет специальную подсветку, ошибки выделяются или исправляются автоматически, также в программу уже загружены специальные шаблоны, которые позволяют упростить создание XML-файлов больших объёмов.

Для начала работы вам нужно создать файл. Нажмите по пункту «Файл» в верхней панели и из выпадающего меню выберите «Создать…». Откроется список, где указывается пункт «Файл».

Вас перебросит в окно с выбором расширения файла, соответственно выбирайте пункт «XML-файл».

В только что созданном файле уже будет первая строка с кодировкой и версией. По умолчанию прописана первая версия и кодировка UTF-8, которые вы можете поменять в любое время. Дальше для создания полноценного XML-файла вам нужно прописать всё то, что было в предыдущей инструкции.

По завершении работы снова выберите в верхней панели «Файл», а там из выпадающего меню пункт «Сохранить всё».

Способ 2: Microsoft Excel

Можно создать XML-файл и не прописывая код, например, при помощи современных версий Microsoft Excel, который позволяет сохранять таблицы с данным расширением. Однако нужно понимать, что в этом случае создать что-то более функциональное обычной таблицы не получится.

Такой способ больше подойдёт тем, кто не хочет или не умеет работать с кодом. Однако в этом случае пользователь может столкнуться с определёнными проблемами при перезаписи файла в XML-формат. К сожалению, проделать операцию преобразования обычной таблицы в XML можно только на самых новых версиях MS Excel. Чтобы это сделать, используйте следующую пошаговую инструкцию:

  1. Заполните таблицу каким-либо контентом.
  2. Нажмите на кнопку «Файл», что в верхнем меню.
  3. Откроется специальное окно, где нужно нажать на «Сохранить как…». Этот пункт можно найти в левом меню.
  4. Укажите папку, куда необходимо сохранить файл. Папка указывается в центральной части экрана.
  5. Теперь вам нужно указать название файла, а в разделе «Тип файла» из выпадающего меню выбрать
    «XML-данные».
  6. Нажмите на кнопку «Сохранить».

Способ 3: Блокнот

Для работы с XML вполне подойдёт даже обычный «Блокнот», однако пользователю, который не знаком с синтаксисом языка, придётся трудно, так как в нём нужно прописывать различные команды и теги.

Несколько проще и значительно продуктивнее процесс будет идти в специализированных программах для редактирования кода, например, в Microsoft Visual Studio.

В них есть специальная подсветка тегов и всплывающие подсказки, что значительно упрощает работу человеку, плохо знакомому с синтаксисом этого языка.

Для этого способа не потребуется что-либо скачивать, так как в операционную систему уже встроен «Блокнот». Давайте попробуем сделать в нём простую XML-таблицу по данной инструкции:

  1. Создайте обычный текстовый документ с расширением TXT. Разместить его можно где угодно. Откройте его.
  2. Начните прописывать в нём первые команды. Для начала нужно задать всему файлу кодировку и указать версию XML, делается это следующей командой:

    Первое значение — это версия, её менять не обязательно, а второе значение — это кодировка. Рекомендуется использовать кодировку UTF-8, так как большинство программ и обработчиков работают с ней корректно. Однако её можно изменить на любую другую, просто прописав нужное название.

  3. Создайте первый каталог в вашем файле, прописав тег и закрыв его таким образом .
  4. Внутри этого тега теперь можно написать какой-нибудь контент. Создадим тег и присвоим ему любое имя, например, «Иван Иванов». Готовая структура должна быть такой:
  5. Внутри тега теперь можно прописать более подробные параметры, в данном случае это информация о неком Иване Иванове. Пропишем ему возраст и должность. Выглядеть это будет так:

    25
    True

  6. Если вы следовали инструкции, то у вас должен получиться такой же код, как ниже. По завершении работы в верхнем меню найдите «Файл» и из выпадающего меню выберите «Сохранить как…». При сохранении в поле «Имя файла» после точки должно стоять расширение не TXT, а XML.

Примерно так у вас должен выглядеть готовый результат:

25
True

XML-компиляторы должны обработать этот код в виде таблицы с одной колонкой, где указаны данные о неком Иване Иванове.

В «Блокноте» вполне можно сделать несложные таблицы наподобие этой, но при создании более объёмных массивов данных могут возникнуть сложности, так как в обычном «Блокноте» нет функций исправления ошибок в коде или их подсветки.

Как видите в создании XML-файла нет ничего сложного. При желании его может создать любой пользователь, который более-менее умеет работать на компьютере. Однако для создания полноценного XML-файла рекомендуется изучить данный язык разметки, хотя бы на примитивном уровне.

Мы рады, что смогли помочь Вам в решении проблемы.

Источник: http://word-office.ru/kak-sdelat-fayl-xml-iz-word.html

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.