Как отредактировать xml ручным способом. Чем открыть XML файл. Инструментальные средства для работы с XQuery

Записав вчера видео о выгрузке отчета РСВ-1, я вспомнил еще об одной детали, о которой стоит рассказать в связи с этой темой.

Не секрет, что номер файла, который формируется при выгрузке РСВ-1 из Бухгалтерии или УСН 7.7 при каждой новой выгрузке увеличивается на "1":

И если номера пачек персонифицированного отчета, например, "4" и "5", то хотелось бы, чтобы номер файла РСВ-1 был бы "6". Как это сделать? Дело в том, что мало просто переименовать файл исправив номер в имени файла. Ведь номер файла прописан и в самом файле. Это можно легко проверить: если кликнуть по файлу с расширением xml он откроется для просмотра программой Explorer (или какой-то другой, в зависимости от настроек вашей операционной системы):

Итак, вначале исправляем имя файла. В нашем случае заменяем "21" на "06". А для исправления содержимого - воспользуемся программой "Блокнот", который есть на любом компьютере. Дело в том, что файл "xml" это простой текстовый файл, который легко исправить блокнотом. Кликаем правой клавишей мышки по файлу и в открывшемся контекстном меню выбираем "Открыть с помощью" и из появившегося списка программ выбираем "блокнот".

Если в перечне программ блокнота нет, то выбираем пункт "Выбрать программу":

И в появившемся окне "Выбор программы" выбираем блокнот и нажимаем "ОК".

Теперь в блокноте меняем номер в названии файла (например, "21" на "06") и закрываем блокнот с сохранение. Вот и все. Можно сдавать в ПФР 🙂

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

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

Но руководство поставило задачу найти бесплатный аналог. Результатом поиска краткий обзор бесплатных XML редакторов.


Требования.

Работа с XML/XSLT/XSD
- Удобный редактор с подсказками и подсветкой
- XSLT процессор и дебагер.

Бесплатные XML редакторы

Обзор

Exchanger XML Lite V3.2. Возникли проблемы с установкой. Инсталляция проходила почти до конца и замирала. А жаль. По описанию на сайте у него очень богатый набор функций.

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

Serna Free. Этот редактор понравился мне меньше всех. Он прячет XML теги и жутко тормозит. Работать очень не удобно.

XML Marker. Очень понравился. Показывает XML в табличном виде доступном для редактирования. Жаль нет подсказок и возможности делать XSLT трансформации.

XMLPad. Понравился больше всех. Показывает XML в табличном виде и в виде дерева. Есть подсказки. Есть возможность делать XSLT трансформации.

Стравнение

Выводы

Ни один из рассмотренных бесплатных редакторов не может полностью заменить хороший платный редактор. Больше всех поставленным требованиям соответствует XMLPad. Но XML Marker можно одновременно редактировать код и видеть результат в табличном виде.

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

UPD. Большой обзор XML редакторов «Choosing an XML editor»

UPD. Письма читателей.

Добрый день Александр,

Не являюсь участником сообщества "Хабрахабр", поэтому, с Вашего позволения реагирую почтой на Ваш пост.

Хотел бы отметить, что Ваш обзор редактора Syntext Serna в разрезе редактора XML-файлов абсолютно некорректен.
Основное назначение Syntext Serna -- не редактирование XML-конфигов или создание файлов XML Scheme и XSLT, а
визуальное создание и поддержка документации в формате XML (например, DocBook или DITA). Именно поэтому "Он прячет XML теги" (цитата), т.к.
основным пользователем редактора является технический писатель, которому не нужно иметь глубокие знания XML и уж
тем более, допускать ошибки в несбалансированных тэгах. Если требуется поправить XML-документ в невизуальном режиме,
то для этих целей в Syntext Serna существует режим "Plain mode".

Если возможно, буду благодарен, если разместите данное замечание в Вашем посте.

Спасибо,
--
With best regards,
Andrew Sichevoi, thekondor.net

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

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

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

Способ 1: XmlGrid

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

Начать работу с XML-файлом в XmlGrid можно либо загрузив его на сайт, либо же поместив туда непосредственное содержимое документа.

Начнем со второго варианта. В этом случае мы просто копируем весь текст из файла XML и вставляем его в поле на главной странице сервиса. А затем жмем на кнопку «Submit» .


Другой же способ — загрузить XML-документ с компьютера.


Есть еще и третий способ импорта файла XML в XmlGrid — загрузка по ссылке.


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


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

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

Способ 2: TutorialsPoint

Если предыдущий сервис вам показался довольно специфичным, можно воспользоваться более классическим XML-редактором. Такой инструмент предлагается на одном из крупнейших онлайн-ресурсов в сфере IT-образования — TutorialsPoint.

Перейти к XML-редактору мы можем через дополнительное меню на сайте.


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

Редактор представляет собой пространство, разделенное на две части. Слева находится область для написания кода, справа — его древовидное представление.


Чтобы загрузить XML-файл в онлайн-сервис, придется воспользоваться меню в левой части страницы, а именно вкладкой «Upload File» .

Для импорта документа с компьютера используйте кнопку «Upload from Computer» . Ну а чтобы загрузить XML-файл напрямую со стороннего ресурса, введите ссылку в поле с подписью «Enter URL to Upload» ниже и нажмите «GO» .

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

В итоге файл с названием «file.xml» будет сразу же загружен на ваш ПК.

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

Способ 3: Code Beautify

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

Чтобы открыть непосредственно XML-редактор, на главной странице сервиса под заголовком «Popular Functionality» или «Web Viewer» найдите кнопку «XML Viewer» и нажмите на нее.

Интерфейс онлайн-редактора, как и функциональная составляющая, очень схож с уже рассмотренным выше инструментом. Как и в решении TutorialsPoint, рабочее пространство разделено на две части — область с XML-кодом («XML Input» ) слева и его древовидное представление («Result» ) справа.

Загрузить файл для редактирования можно при помощи кнопок «Load Url» и «Browse» . Первая позволяет импортировать XML-документ по ссылке, а вторая — из памяти вашего компьютера.


После окончания работы с файлом, его обновленную версию можно загрузить на компьютер в виде CSV-документа или с исходным расширением XML. Для этого используются кнопки «Export to CSV» и «Download» соответственно.

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

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

Открытие, редактирование и сохранение XML

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

Для этого мы будем использовать XSL, чтобы преобразовать XML документ в HTML форму. Значения XML элементов будут записываться в поля ввода в HTML форме. HTML форму можно будет редактировать. После редактирования данные можно будет отправить на сервер, и XML файл будет обновлен (мы покажем соответствующий код на PHP и ASP).

XML и XSL файлы

Для примера возьмем следующий XML документ ("tool.xml"):

HAMMER HG2606 32456240 $30.00

И соответствующую таблицу стилей XSL ("tool.xsl"):

Tool Information (edit):


Код в приведенном выше XSL файле в цикле проходит по элементам XML файла и создает поле ввода для каждого XML элемента-"поля".

Значение атрибута "id" XML элемента-"поля" добавляется одновременно в атрибуты "id" и "name" каждого HTML поля ввода. Значение каждого XML элемента "value" добавляется в атрибут "value" каждого HTML поля ввода. В результате мы получаем редактируемую HTML форму, содержащую значения из XML файла.

Наконец, мы определяем вторую таблицу стилей XSL: "tool_updated.xsl". Этот XSL файл будет использоваться для отображения обновленных XML данных. Данная таблица стилей формирует не HTML форму, а статическую HTML таблицу:

Updated Tool Information:

PHP файл

В файле "tool.xsl" указываем в атрибуте action формы файл "edittool.php".

Файл "edittool.php" содержит две функции: функция loadFile() загружает и преобразовывает XML файл для дальнейшего отображения, а функция updateFile() применяет сделанные изменения в XML файле:

load($xml); $xslDoc = new DOMDocument(); $xslDoc->load($xsl); $proc = new XSLTProcessor(); $proc->importStyleSheet($xslDoc); echo $proc->transformToXML($xmlDoc); } function updateFile($xml) { $xmlLoad = simplexml_load_file($xml); $postKeys = array_keys($_POST); foreach($xmlLoad->children() as $x) { foreach($_POST as $key=>$value) { if($key == $x->attributes()) { $x->value = $value; } } } $xmlLoad->asXML($xml); loadFile($xml,"tool_updated.xsl"); } if($_POST["btn_sub"] == "") { loadFile("tool.xml", "tool.xsl"); } else { updateFile("tool.xml"); } ?>

Примечание : Все преобразования и изменения XML файла делаются на сервере. Это кросс-браузерное решение. Пользователь получит только HTML страницу, что будет работать в любом браузере.

ASP файл

В файле "tool.xsl" указываем в атрибуте action формы файл "edittool.asp".

Файл "edittool.asp" содержит две функции: функция loadFile() загружает и преобразовывает XML файл для дальнейшего отображения, а функция updateFile() применяет сделанные изменения в XML файле:

<% function loadFile(xmlfile,xslfile) Dim xmlDoc,xslDoc "Загружаем XML и XSL файлы set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) set xslDoc = Server.CreateObject("Microsoft.XMLDOM") xslDoc.async = false xslDoc.load(xslfile) "Преобразовываем файл Response.Write(xmlDoc.transformNode(xslDoc)) end function function updateFile(xmlfile) Dim xmlDoc,rootEl,f Dim i "Загружаем XML файл set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) "Устанавливаем переменную rootEl равную корневому элементу Set rootEl = xmlDoc.documentElement "Цикл по набору формы for i = 1 To Request.Form.Count "Убираем элементы кнопок в форме if instr(1,Request.Form.Key(i),"btn_")=0 then "Метод selectSingleNode запрашивает XML файл на наличие одиночного узла, "соответствующего запросу. Данный запрос ищет элемент value, который "является потомком элемента field, у которого атрибут id соответствует "текущему ключу в Form Collection. Когда соответствие будет найдено, "установить свойство text равным значению текущего поля в Form Collection. set f = rootEl.selectSingleNode("field[@id="" & _ Request.Form.Key(i) & ""]/value") f.Text = Request.Form(i) end if next "Сохранить модифицированный XML файл xmlDoc.save xmlfile "Освобождаем все ссылки на объекты set xmlDoc=nothing set rootEl=nothing set f=nothing "Загружаем модифицированный XML файл с таблицей стилей, "которая позволит пользователю увидеть отредактированную информацию loadFile xmlfile,server.MapPath("tool_updated.xsl") end function "Если форма была отправлена, обновить XML файл и отобразить результат "Если нет, преобразовать XML файл для редактирования if Request.Form("btn_sub")="" then loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl") else updateFile server.MapPath("tool.xml") end if %>