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


У вас оказался файл XML и требуется изменить пару значений, возможно вы уже пробовали и система ругается говоря «файл не соответствует формату».
В данной статье рассмотрим, как можно менять данные в XML, с какими ошибками можно столкнуться и как их можно исправить.
Если у вас у вас пока нет знаний о XML, можете прочитать статью Как открыть XML-файл и посмотреть его в читаемом виде.
Допустим поставщик прислал XML документ с товарами в следующем формате и требуется поменять цены, чтобы добавить свою наценку.
<products>
<product>
<name>Молоток</name>
<price>350</price>
</product>
<product>
<name>Отвёртка</name>
<price>180</price>
</product>
<product>
<name>Рулетка</name>
<price>420</price>
</product>
</products>пример XML
Первый шаг - это определить структуру, для удобства просмотра документа можно воспользоваться онлайн инструментом на этом сайте.
Осматривая структуру на примере выше, можно понять, что имеется список продуктов. В этом списке каждый продукт находится внутри тегов <product>...</product>.
Следовательно, осталось определить в каком товаре (по тегу <name>) желаем изменить цену и записать новую цену в тег<price>...</price>.
После чего требуется сохранить файл.
XML очень строгий документ и в тоже время хрупкий, одно неловкое движение и можно случайно удалить или добавить лишнего. Ниже приведены основные ошибки.
При спешке или невнимательности, отталкиваясь от примера выше, человек может исправить не тот <product>...</product> и случайно существенно занизить цену, перепутав для примера батарейки с телевизором.
В XML структуре документа могут встречаться повторяемые куски с похожими значениями (например <product>...</product>), при попытке извлечения вручную, можно банально запутаться и взять не тот кусок или значение.
Следовательно есть риск случайно скопировать <product>...</product> не в ту категорию, и выйдет, что «блендер» окажется в разделе «садовые инструменты» или даже сам окажется разделом категорий наравне с другими.
При исправлении можно случайно удалить тег, например <product>.
А так как каждый открывающий тег должен иметь закрывающий, последствия могут быть двух типов:
легкие, система просто откажется принять файл
тяжелые, система ломается от такого файла и последствия необратимы
При ручном редактировании можно забыться и написав вручную например <Price>, оставить первую букву заглавной.
Теги чувствительны к регистру <Price> и <price> это разные теги.
Открыв файл в программе и внеся изменения, при закрытии, вас могут спросить о сохранении.
Нажав кнопку сохранить, файл перезапишется и если не осталось отдельного оригинала, то фактически исходные данные уже не вернуть.
Иногда бывает соблазн изменить расширение файла, а именно то что после точки на конце, например .xml на .txt.
Однако в большинстве случаев это бесполезно, так как расширение всего лишь помогает операционной системе понять, какой программой обычно открывать файл.
Переименование не превращает XML в другой формат.
Если в XML документе вдруг текст стал похож на кракозябры олоѾк , вероятно потерялась первая строка документа, которая сообщает о кодировке.
<?xml version="1.0" encoding="UTF-8"?>Кодировка XML документа
Пытаясь исправить файл вручную, можно потратить много времени и сил.
Редакторы XML могут подсказать о наличии ошибок только с точки зрения нарушения структуры, например когда <product> стал <Product> или закрывающий тег отсутствует.
Опечатки или неверное место копирования, может обнаружить только человек знающий файл и порой лишь спустя время, когда их исправление может оказаться запоздалым.
Если изменения требуются часто или речь идет о больших количествах файлов.
Рекомендуется обратиться к программисту для написания программы, которая выполнит ручную работу по вашим требованиям.
Такая программа может сэкономить время на больших объемах, указать на изменения структуры XML файла - если такие произойдут, производить изменения только в рамках поставленных ей задач, а так же предоставлять отчет о проделанной работе.
Дополнительной особенностью может быть то, что такой программой может пользоваться человек (например сотрудник) не имеющий технических знаний.
При необходимости программа так же может перевести данные в необходимый формат, например в json, csv, excel, yaml.




