Создаём XML-файл при помощи специальных программ

Содержание

Чем Открыть (Xml Файлы) Росреестра и Прочие в Человекочитаемом Формате

Создаём XML-файл при помощи специальных программ

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

Конечно, не все люди толком понимают, что это за расширение, и как его правильно открыть? Например, многим людям пришли файлы от налоговой в формате XML, и теперь эти люди не знают: — Чем открыть xml файлы росреестра в человекочитаемом формате?

Что значит XML расширение?

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

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

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

Например, в веб программировании используют такой известный файл, как sitemap.xml. В переводе на русский, это «карта сайта» (файл, где веб мастер помещает адреса всех страниц своего ресурса). Данный файл создан для поисковика Google. Вообще, стандарт XML создали специально в виде универсального, чтобы было удобнее обмениваться информацией среди различных программ.

Как открыть файл XML – рассмотрим самые простые методы

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

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

Для этого, я выбираю, чтобы долго не искать, тот же файл sitemap.xml моего сайта, кликаю по нему левой кнопкой мышки. Файл открывает браузер Internet Explorer. То, что вы видите на скриншоте, действительно находится на данном файле, но, в сжатом виде.

Это не значит, что все карты сайта так выглядят, просто я этот файл специально сжал для более быстрой загрузки сайта. Такая форма открытия хороша для роботов поисковых систем. Роботу от поисковика, и многим программистам, в этом наборе символов всё понятно. Но, обычному человеку нет.

Зато, обычный человек понимает, что файлы с расширением XML содержат текст.

Вообще, XML расшифровывается как eXtensible Markup Language, что переводится как «Расширяемый язык». Отсюда понятно, что это один из языков программирования. Простому пользователю в суть данного языка вникать не следует.

Чем ещё можно открыть подобный файл XML?

Как я уже сказал, такие файлы содержать текст. Отсюда, попробуем открыть данный файл самым простым текстовым редактором «Блокнот». Итак, опять попробуем открыть файл sitemap.xml. Кликнем по файлу правой кнопкой мышки. Выберем «Открыть с помощью» и среди программ ниспадающего меню, выберем «блокнот».

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

Итак, давайте вспомним, чем ещё предлагала система открыть данные файлы? Одной из лучших программ для этого, на мой взгляд, является бесплатная русифицированная программа просмотра файлов сайта «Notepad++» (эта программа очень похожа на Блокнот). Скачать Notepad++ с официального сайта. Затем, во время установки, если вы увидите, что дизайн идёт английский, не забудьте поменять его на русский!

Как вы заметили, данная программа имеет, по сравнению с блокнотом, более богатый функционал, включавший разнообразное меню, вроде «Кодировки», «Инструменты», «Макросы», «Поиск» и прочее. Да и сам код файла выглядит более красиво. Различные части кода отмечены разным цветом.

Если же «Notepad++» открывает письма с крякозябрами, то, это значит, их нужно перевести в нормально читаемый формат. Для этого, откроем «Notepad++». В меня выбираем «Кодировки», затем выберем «Кодировка в UTF-8 без BOM». Теперь в данном редакторе, у вас должен открыться человеко читаемый формат!

Чем ещё предлагала система открыть файл XML?

Программу WordPad. Эта программа похожа на урезанный Word программ «Office», только системный. Итак, открываем программой WordPad. Как видно из скриншота, текстовая часть кода та же, но, возможности меню увеличены. Хотя, для данного файла они лишние.

Чем ещё предлагала система открыть файл? Обычным Word. Итак, открываем файл этим текстовым редактором. Как видим, программа Word преобразила коды в настоящие ссылки и даты, которые закодированы в этом файле.

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

То есть, лучше всего файл с расширением XML открывает программа «Notepad++».

Как открыть файл XML присланный Росреестром?

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

На официальный сайт Росреестра можно зайти по ссылке…. На сайте также можно официально обратиться в поддержку отой организации.
Кроме этих программ, открыть XML могут прочие браузеры, а не только Internet Explorer. Открывает данный файл другая программа Office «Excel».

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

Это программы: — XML Pad, EditiXLiteVersion, XMLMarker.

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

Но, в режиме открытия файла в браузере, мы не можем его редактировать. Для редактирования я рекомендую применять «Notepad++».

Если же вам необходимо провести более тщательное редактирование файла, я рекомендую применять программы из предыдущего абзаца, вроде XML Marker. Успехов!

С уважением, Андрей Зимин           23.11.2018

Источник: https://info-kibersant.ru/chem-otkryt-xml.html

Как я разбирал docx с помощью XSLT

Создаём XML-файл при помощи специальных программ

Задача обработки документов в формате docx, а также таблиц xlsx и презентаций pptx является весьма нетривиальной. В этой статье расскажу как научиться парсить, создавать и обрабатывать такие документы используя только XSLT и ZIP архиватор.

Зачем?

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

  • библиотеки может просто не существовать
  • в проекте не нужен ещё один чёрный ящик
  • ограничения библиотеки по платформам и т.п.
  • проблемы с лицензированием
  • скорость работы

Поэтому в этой статье будем использовать только самые базовые инструменты для работы с docx документом.

Структура docx

Для начала разоберёмся с тем, что собой представляет docx документ. docx это zip архив который физически содержит 2 типа файлов:

  • xml файлы с расширениями xml и rels
  • медиа файлы (изображения и т.п.)

А логически — 3 вида элементов:

  • Типы (Content Types) — список типов медиа файлов (например png) встречающихся в документе и типов частей документов (например документ, верхний колонтитул).
  • Части (Parts) — отдельные части документа, для нашего документа это document.xml, сюда входят как xml документы так и медиа файлы.
  • Связи (Relationships) идентифицируют части документа для ссылок (например связь между разделом документа и колонтитулом), а также тут определены внешние части (например гиперссылки).

Они подробно описаны в стандарте ECMA-376: Office Open XML File Formats, основная часть которого — PDF документ на 5000 страниц, и ещё 2000 страниц бонусного контента.

Минимальный docx

Простейший docx после распаковки выглядит следующим образом

Давайте посмотрим из чего он состоит.

[Content_Types].xml

Находится в корне документа и перечисляет MIME типы содержимого документа:

_rels/.rels

Главный список связей документа. В данном случае определена всего одна связь — сопоставление с идентификатором rId1 и файлом word/document.xml — основным телом документа.

word/document.xml

Основное содержимое документа.

word/document.xml Test

Здесь:

  • — сам документ
  • — тело документа
  • — параграф
  • — run (фрагмент) текста
  • — сам текст
  • — описание страницы

Если открыть этот документ в текстовом редакторе, то увидим документ из одного слова Test.

word/_rels/document.xml.rels

Здесь содержится список связей части word/document.xml. Название файла связей создаётся из названия части документа к которой он относится и добавления к нему расширения rels. Папка с файлом связей называется _rels и находится на том же уровне, что и часть к которой он относится. Так как связей в word/document.xml никаких нет то и в файле пусто:

Даже если связей нет, этот файл должен существовать.

docx и Microsoft Word

docx созданный с помощью Microsoft Word, да в принципе и с помощью любого другого редактора имеет несколько дополнительных файлов.

Вот что в них содержится:

  • docProps/core.xml — основные метаданные документа согласно Open Packaging Conventions и Dublin Core [1], [2].
  • docProps/app.xml — общая информация о документе: количество страниц, слов, символов, название приложения в котором был создан документ и т.п.
  • word/settings.xml — настройки относящиеся к текущему документу.
  • word/styles.xml — стили применимые к документу. Отделяют данные от представления.
  • word/webSettings.xml — настройки отображения HTML частей документа и настройки того, как конвертировать документ в HTML.
  • word/fontTable.xml — список шрифтов используемых в документе.
  • word/theme1.xml — тема (состоит из цветовой схемы, шрифтов и форматирования).

В сложных документах частей может быть гораздо больше.

Реверс-инжиниринг docx

Итак, первоначальная задача — узнать как какой-либо фрагмент документа хранится в xml, чтобы потом создавать (или парсить) подобные документы самостоятельно. Для этого нам понадобятся:

  • Архиватор zip
  • Библиотека для форматирования XML (Word выдаёт XML без отступов, одной строкой)
  • Средство для просмотра diff между файлами, я буду использовать git и TortoiseGit

Инструменты

Также понадобятся скрипты для автоматического (раз)архивирования и форматирования XML.
Использование под Windows:

  • unpack file dir — распаковывает документ file в папку dir и форматирует xml
  • pack dir file — запаковывает папку dir в документ file

Использование под Linux аналогично, только ./unpack.sh вместо unpack, а pack становится ./pack.sh.

Использование

Поиск изменений происходит следующим образом:

  1. Создаём пустой docx файл в редакторе.
  2. Распаковываем его с помощью unpack в новую папку.
  3. Коммитим новую папку.
  4. Добавляем в файл из п. 1. изучаемый элемент (гиперссылку, таблицу и т.д.).
  5. Распаковываем изменённый файл в уже существующую папку.
  6. Изучаем diff, убирая ненужные изменения (перестановки связей, порядок пространств имён и т.п.).
  7. Запаковываем папку и проверяем что получившийся файл открывается.
  8. Коммитим изменённую папку.

Пример 1. Выделение текста жирным

Посмотрим на практике, как найти тег который определяет форматирование текста жирным шрифтом.

  1. Создаём документ bold.docx с обычным (не жирным) текстом Test.
  2. Распаковываем его: unpack bold.docx bold.
  3. Коммитим результат.
  4. Выделяем текст Test жирным.
  5. Распаковываем unpack bold.docx bold.
  6. Изначально diff выглядел следующим образом:

Рассмотрим его подробно:

docProps/app.xml

@@ -1,9 +1,9 @@- 0+ 1

Изменение времени нам не нужно.

docProps/core.xml

@@ -4,9 +4,9 @@- 1+ 2 2017-02-07T19:37:00Z- 2017-02-07T19:37:00Z+ 2017-02-08T10:01:00Z

Изменение версии документа и даты модификации нас также не интересует.

word/settings.xml

@@ -1,8 +1,9 @@+ @@ -17,10 +18,11 @@+

Также не содержит ничего относящегося к жирному тексту. Отменяем.

7 Запаковываем папку с 1м изменением (добавлением ) и проверяем что документ открывается и показывает то, что ожидалось.
8 Коммитим изменение.

Пример 2. Нижний колонтитул

Теперь разберём пример посложнее — добавление нижнего колонтитула.
Вот первоначальный коммит. Добавляем нижний колонтитул с текстом 123 и распаковываем документ. Такой diff получается первоначально:

Сразу же исключаем изменения в docProps/app.xml и docProps/core.xml — там тоже самое, что и в первом примере.

word/styles.xml

diff@@ -480,6 +480,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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

Посмотрим теперь собственно на сам нижний колонтитул (часть пространств имён опущена для читабельности, но в документе они должны быть):

123

Тут виден текст 123. Единственное, что надо исправить — убрать ссылку на .

В результате анализа всех изменений делаем следующие предположения:

  • footnotes и endnotes не нужны
  • В [Content_Types].xml надо добавить footer
  • В word/_rels/document.xml.rels надо добавить ссылку на footer
  • В word/document.xml в тег надо добавить

Уменьшаем diff до этого набора изменений:

Затем запаковываем документ и открываем его.
Если всё сделано правильно, то документ откроется и в нём будет нижний колонтитул с текстом 123. А вот и итоговый коммит.

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

Практика

Найдя интересующее нас изменение, логично перейти к следующему этапу, это может быть что-либо из:

  • Создания docx
  • Парсинг docx
  • Преобразования docx

Тут нам потребуются знания XSLT и XPath.

Давайте напишем достаточно простое преобразование — замену или добавление нижнего колонтитула в существующий документ. Писать я буду на языке Caché ObjectScript, но даже если вы его не знаете — не беда. В основном будем вызовать XSLT и архиватор. Ничего более. Итак, приступим.

Алгоритм

Алгоритм выглядит следующим образом:

  1. Распаковываем документ.
  2. Добавляем наш нижний колонтитул.
  3. Прописываем ссылку на него в [Content_Types].xml и word/_rels/document.xml.rels.
  4. В word/document.xml в тег добавляем тег или заменяем в нём ссылку на наш нижний колонтитул.
  5. Запаковываем документ.

Приступим.

Распаковка

В Caché ObjectScript есть возможность выполнять команды ОС с помощью функции $zf(-1, oscommand). Вызовем unzip для распаковки документа с помощью обёртки над $zf(-1):

/// Используя %3 (unzip) распаковать файл %1 в папку %2Parameter UNZIP = “%3 %1 -d %2”; /// Распаковать архив source в папку targetDirClassMethod executeUnzip(source, targetDir) As %Status{ set timeout = 100 set cmd = $$$FormatText(..#UNZIP, source, targetDir, ..getUnzip()) return ..execute(cmd, timeout)}

Создаём файл нижнего колонтитула

На вход поступает текст нижнего колонтитула, запишем его в файл in.xml:

TEST

В XSLT (файл — footer.xsl) будем создавать нижний колонтитул с текстом из тега xml (часть пространств имён опущена, вот полный список):

Теперь вызовем XSLT преобразователь:

do ##class(%XML.XSLT.Transformer).TransformFile(“in.xml”, “footer.xsl”, footer0.xml”)

В результате получится файл нижнего колонтитула footer0.xml:

TEST

Добавляем ссылку на колонтитул в список связей основного документа

Сссылки с идентификатором rId0 как правило не существует. Впрочем можно использовать XPath для получения идентификатора которого точно не существует.
Добавляем ссылку на footer0.xml c идентификатором rId0 в word/_rels/document.xml.rels:

XSLT

Прописываем ссылки в документе

Далее надо в каждый тег добавить тег или заменить в нём ссылку на наш нижний колонтитул. Оказалось, что у каждого тега может быть 3 тега — для первой страницы, четных страниц и всего остального:

XSLT

Добавляем колонтитул в [Content_Types].xml

Добавляем в [Content_Types].xml информацию о том, что /word/footer0.xml имеет тип application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml:

XSLT

В результате

Весь код опубликован. Работает он так:

do ##class(Converter.Footer).modifyFooter(“in.docx”, “out.docx”, “TEST”)

Где:

  • in.docx — исходный документ
  • out.docx — выходящий документ
  • TEST — текст, который добавляется в нижний колонтитул

Выводы

Используя только XSLT и ZIP можно успешно работать с документами docx, таблицами xlsx и презентациями pptx.

Открытые вопросы

  1. Изначально хотел использовать 7z вместо zip/unzip т… к. это одна утилита и она более распространена на Windows. Однако я столкнулся с такой проблемой, что документы запакованные 7z под Linux не открываются в Microsoft Office. Я попробовал достаточно много вариантов вызова, однако положительного результата добиться не удалось.

Источник: https://habr.com/post/321044/

Как открыть xml файл в читаемом виде

Создаём XML-файл при помощи специальных программ

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

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

Рисунок 1. Внешний вид ярлыка файлов расширения .xml

В этой статье мы расскажем как таковых избежать и сохранить его структуру.

Формат xml — что это такое

Расширяемый язык разметки, он же eXtensible Markup Language, один из самых часто используемых в интернете. Его назначение — описание документов и частичное описание поведения утилит, которые его читают.

Он имеет широкую область применения:

  • позволяет свободно расширять разметку под потребности и задачи для её использования;
  • является основой для создания новых видов — YML, OpenXML, 2;
  • распространён в документообороте.

Чем открыть файл хмл

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

Рисунок 2.Внешний вид интерфейса приложения notepad++ с открытым .xml файлом

Отобразить содержимое поможет простой блокнот — AkelPad, notepad или notepad++, установленный на ПК, или один из веб-браузеров при наличии специального плагина. Но правильным будет открывать формат в контексте того сервиса или той программы, для которых он был создан (Рисунок 2).

Открыть файл xml онлайн

Остановимся на самом простом способе. Как уже было отмечено, для комфортного просмотра в браузере нужен отдельный плагин. Это XML Viewer (Рисунок 3).

Рисунок 3. Пример открытого .xml файла в окне браузера с помощью плагина XML Viewr

Чтобы открыть файл онлайн, запустите обозреватель и нажмите комбинацию клавиш Ctrl+O (в английской раскладке). Для MacOS — введите Command+O. Затем выберите необходимый объект и нажмите Enter.

Чем открыть файл xml на компьютере (Виндовс)

Для этих целей подходят все современные текстовые редакторы.

Примечание: Если у вас установлен windows 10, документ будет автоматически открываться в окне браузера назначенного по умолчанию, в Microsoft Edge.

Эту опцию легко перенастроить в контекстном меню, используя пункт «открыть с помощью», или в постоянных настройках — «свойства»\«общие»\«изменить»\«ок».

Чем ещё можно открыть xml на компьютере?

  1. Текстовый редактор Word. Новые версии легко преобразуют список данных в читаемую структуру.
  2. Microsoft Office Excel. Информация будет организована в виде таблицы. Минус — очень медленная загрузка (Рисунок 4).
  3. Блокнот Notepad. Быстро читает даже тяжёлые документы. Его функционал можно увеличить за счёт дополнений.

Рисунок 4. Рабочий интерфейс приложения Microsoft Office Excel с открытым .xml файлом

Как открыть xml файл в excel

Это самое распространённое приложение. Разберём на примере пошаговой инструкции, как открыть xml файл с его помощью.

  • Используйте стандартную команду. Если у вас версия 2007 года, то нажмите кнопку Microsoft Office, а затем — «открыть».
  • Укажите путь к нужному элементу во всплывающем окне, выберите его и откройте для просмотра.

Как открыть файл хмл на Linux

На Linux встречается два типа расширения — привычный нам вид и OpenXML. Они доступны для чтения и редактирования в одном из пакетов офисных программ — LibreOffice и OpenOffice.

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

Открытие файла xml MacOS

Один из вариантов чтения объекта был упомянут выше. Это просмотр в окне интернет-обозревателя.

Рисунок 5. Пример открытого файла в приложении LibreOffice

Для открытия непосредственно на MacOS есть MS Excell и текстовые редакторы из пакетов OpenOffice и LibreOffice (Рисунок 5).

Чем открыть файл xml на андроид

Формат поддерживается практически всеми современными устройствами.

Первое из короткого списка приложений, чем открыть файл xml на андроид — это Axel (XML Editor\Viewer). Его используют для создания, редактирования и чтения данных этого типа.

На втором месте бывший Андроид Офис, он же OfficePro. 

Он поддерживает:

  1. MS Word — doc, docx, rtf, xml;

  2. MS Excel — xls, xlsx;

  3. MS PowerPoint — ppt, pptx;

  4. текстовики и CSV.

Какой программой открыть файл xml

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

Список программ

  • MS Office, XML Notepad 2007 – OS Windows;
  • LibreOffice, OpenOffice – универсальны для любых дистрибутивов;

Как проверить xml файл на ошибки

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

Они возникают при невозможности выполнения проверки информации на соответствие карте данных документа. Для получения их описания, нажмите кнопку «сведения» в открывшемся диалоговом окне.

Ниже приведены объяснения частых несоответствий.

  1. Ошибка проверки схемы. При выборе в свойствах карты опции «проверка данных на соответствие схеме при импорте и экспорте». Они были только импортированы, но не прошли саму проверку.

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

  3. Ошибка разбора формата. Средство синтаксического анализа не может прочесть выбранный объект. Проверьте документ на правильность и логичность его построения.

  4. Невозможно найти карту соответствующую указанным данным. Проблема возникает из-за одновременного импорта сразу нескольких объектов. Вначале импортируйте схему для того который отмечен в строке заголовка вашего окна, а потом выполняйте его импорт.

  5. Не изменяется размер таблицы. Она дополняется новой информацией только снизу. Под ней может находится элемент, который мешает менять её размер. К примеру, рисунок или ещё одна таблица, препятствующая расширению. Измените их расположение на листе.

Программа для открытия xml файлов: скачать бесплатно

Скачать бесплатно программу редактор OpenOffice (for Windows) или OpenOffice (For Mac OS) для открытия этих файлов вы можете на нашем сайте, или с официального ресурса.

Источник: https://soft-ok.net/4764-kak-otkryt-xml-fayl-v-chitaemom-vide.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/?p=3883

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/

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

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

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