XML-файл — что это такое и чем открыть: структура, примеры
XML простыми словами: что такое XML-файл и как он устроен, чем отличается от HTML и JSON, чем открыть его на Windows и Mac, как создать самому и какие ошибки ломают файл.
Нужен прямо сейчас? Инструмент для этой задачи:
XML-файл — это обычный текстовый файл, внутри которого данные размечены тегами. XML (eXtensible Markup Language, «расширяемый язык разметки») — язык этой разметки: каждый кусок информации подписан тегом, и словарь тегов придумываете вы сами, а не разработчик формата. Строка <price>390</price> читается как «цена равна 390», а не как случайное число. За это XML и прижился везде, где данными обмениваются разные системы: программа, читающая файл, узнаёт смысл по тегам и не зависит от порядка колонок, как было бы в таблице без заголовков.
Файл выглядит как текст, открывается любым редактором, специальный софт не нужен. Ловушка в другом: XML — формат строгий. Одна незакрытая скобка или амперсанд без экранирования — и ни одна программа файл не прочитает: парсер останавливается на первой же ошибке. Поэтому ниже не только «чем открыть», но и типовые поломки с починкой.
Чем XML отличается от HTML
Синтаксис общий: угловые скобки, вложенные элементы, атрибуты в кавычках. Разница — в назначении. Набор тегов HTML фиксирован стандартом, и каждый тег описывает показ: p — абзац, img — картинка, a — ссылка. В XML словарь заранее не задан — теги придумывает автор файла под свои данные: <order>, <цена>, <customer>. Браузер при этом ничего не обязан «понимать» — он просто хранит то, что написано.
Строгость тоже разная. Браузер простит HTML незакрытый тег и всё равно соберёт страницу. XML-парсер не прощает ничего: ошибка в одном месте — и не разбирается весь файл. Отсюда частое недоумение: «открыл XML в браузере, а там дерево тегов или сообщение об ошибке, где обещанный документ?» Так и задумано. XML — про данные, а не про отображение.
Третий частый вопрос — отличие от JSON, который решает похожую задачу. Коротко: JSON компактнее и ближе программистам, XML старше, формальнее и до сих пор обязателен там, где его требует принимающая сторона, — маркетплейсы, госсистемы, корпоративные обмены. Развёрнутое сравнение — в статье JSON vs XML.
Структура XML-файла
Документ собирается из пролога, ровно одного корневого элемента и вложенности. Вот файл с заказами интернет-магазина — по нему и пройдёмся:
<?xml version="1.0" encoding="UTF-8"?>
<orders date="2026-08-20">
<order id="10247" status="shipped">
<customer email="ivan@example.ru">Иван Петров</customer>
<items>
<item sku="A-113" qty="2">
<name>Кабель USB-C, 1 м</name>
<price>390</price>
</item>
<item sku="B-207" qty="1">
<name>Зарядное устройство 20 Вт</name>
<price>890</price>
</item>
</items>
<total currency="RUB">1670</total>
</order>
</orders>В примере один заказ с двумя позициями. У <order> служебные поля вынесены в атрибуты (id, status), состав заказа — в повторяющиеся элементы <item>, а название и цена каждого товара — элементы. Сумма в <total> (2 × 390 + 890 = 1670) парсер никак не проверяет: XML следит за разметкой, а не за арифметикой.
Пролог
Первая строка <?xml version="1.0" encoding="UTF-8"?> — декларация: версия стандарта и кодировка. По стандарту она необязательна, но указывайте её всегда: без явной кодировки кириллица превращается в кракозябры уже на этапе чтения файла.
Корневой элемент
Элемент верхнего уровня ровно один — здесь <orders>, и всё остальное лежит внутри него. Два корня подряд — гарантированная ошибка «Extra content at the end of the document», самая частая у тех, кто склеивает две выгрузки в один файл.
Атрибуты против дочерних элементов
Одни и те же данные можно записать двумя способами: атрибутом (<item sku="A-113">) или вложенным элементом (<sku>A-113</sku>). Синтаксически верны оба. Практическое правило: атрибуты — для коротких служебных значений вроде id, статуса, количества; элементы — для всего, что может стать длинным, содержать спецсимволы или потребовать вложенности. Атрибут нельзя повторить, и внутрь него нельзя положить разметку: захотите добавить товару три фотографии — в атрибуте места не будет. Пустые значения записывают самозакрывающимся тегом: <phone/>.
Спецсимволы и CDATA
Пять символов внутри текста обязаны быть экранированы: <, >, &, " и '. Когда экранировать приходится много — например, вы кладёте внутрь XML HTML-код или формулу, — удобнее блок CDATA: парсер читает его как сырой текст и не ищет внутри теги:
<description><![CDATA[Чайник 1,7 л, <b>2200 Вт</b>, фильтр от накипи]]></description>Чем открыть XML-файл
Сначала определитесь с задачей: посмотреть, что внутри, или работать с файлом — править, проверять, вытаскивать данные. Инструменты для этого разные.
| Инструмент | Что даёт | Нюансы |
|---|---|---|
| Блокнот (Windows) | Уже установлен; короткий файл откроет и даст отредактировать | Без подсветки и поиска по структуре; файл в сотню мегабайт просто не откроет |
| Браузер (Chrome, Firefox, Edge) | Покажет дерево тегов со свёрткой; при ошибке назовёт её и строку | Редактировать нельзя; Chrome пишет ошибку текстом вверху страницы |
| VS Code, Notepad++ | Подсветка, свёртка блоков, поиск; большие файлы не проблема | Нужно установить, но оба бесплатны |
| Онлайн-форматтер | Выстроит отступы в файле, свёрнутом в одну строку, и покажет первую ошибку | Для конфиденциальных данных берите инструмент с обработкой прямо в браузере |
На Windows
Правый клик по файлу → «Открыть с помощью» → браузер или блокнот. Для разового просмотра этого достаточно. Если XML-файлы у вас регулярные — фиды, выгрузки, конфиги, — поставьте VS Code: работать с разметкой без подсветки тяжело, а файлы на десятки мегабайт блокнот и вовсе не откроет.
На Mac
TextEdit откроет XML как обычный текст — посмотреть хватит. Для работы удобнее тот же бесплатный VS Code: интерфейс и горячие клавиши одинаковые с Windows-версией, что выручает, если файлы ходят между двумя платформами.
Если файл большой
Фид на сотню мегабайт — реальный размер для каталога маркетплейса. С ним не справятся ни блокнот, ни браузер: первый зависнет при открытии, второй съест память на построение дерева элементов. VS Code открывает большие файлы с натяжкой — подсветку отключает, а совсем крупные уже не берёт. Для разового «взглянуть, что внутри» хитрость простая: откройте первые строки файла — пролог и структуру видно уже там. Для систематической работы с огромными документами пишут скрипт, который читает файл построчно и не держит весь документ в памяти.
Частный случай: файл пришёл одной строкой без отступов или не открывается из-за ошибки. Прогоните его через онлайн-форматтер XML — он выстроит разметку и покажет, на какой строке сломано. Если цель не посмотреть, а забрать данные, конвертер XML в JSON за секунду разложит файл в структуру, которую удобно читать кодом или загружать в таблицы.
Где встречаются XML-файлы
- Товарные фиды. Прайс-лист для Яндекс.Маркета — это XML со своим словарём тегов, формат YML. Как он устроен и как собрать фид, который пройдёт валидацию, разобрано в гиде по YML для Яндекс.Маркета.
- sitemap.xml. Карта сайта, по которой поисковые роботы находят страницы. На любой популярной CMS файл генерируется сам, но открывать и проверять его приходится вручную.
- Конфигурации. AndroidManifest.xml есть в каждом Android-приложении, pom.xml — у Java-проектов на Maven, .csproj — у проектов Visual Studio. Документы Word и Excel (.docx, .xlsx) — это вообще zip-архивы, внутри которых лежит набор XML-файлов.
- Обмен между системами. SOAP-интерфейсы банков и госсервисов, RSS-ленты и подкасты, выгрузки из 1С и CRM — всё это XML под капотом.
Достался файл без пояснений — назначение легко угадать по корневому тегу. <urlset> — это карта сайта, <yml_catalog> — прайс-фид для Маркета, <rss> — лента новостей или подкаст. Откройте файл и посмотрите на вторую строку: обычно этого достаточно, чтобы понять, с чем имеете дело.
Типичные ошибки синтаксиса
Парсер останавливается на первой ошибке и сообщает о ней по-английски. Перевод самых частых сообщений — в таблице.
| Ошибка | Как проявляется | Как исправить |
|---|---|---|
| Незакрытый тег | Premature end of data / no element found | Дописать закрывающий тег; одиночный элемент закрыть сразу: <br/> |
| Разный регистр в паре тегов | mismatched tag | XML различает регистр: <Name> и </name> — разные теги |
| Амперсанд в тексте | The entity name must immediately follow the «&» | Заменить & на & — в том числе в URL с UTM-метками |
| Скобки в тексте | Парсер принимает «<» за начало тега | Экранировать: < и > |
| Кириллица без кодировки | Кракозябры или not well-formed | Пересохранить файл в UTF-8 и указать encoding="UTF-8" в прологе; если файл в windows-1251 — честно написать encoding="windows-1251" |
| Два корневых элемента | Extra content at the end of the document | Обернуть всё содержимое в один корень |
Лайфхак: ошибку ищет не человек, а инструмент. Форматтер покажет номер строки, и правка займёт минуту вместо получаса со скрещенными глазами. И не путайте проверку синтаксиса с проверкой смысла: файл с тегами <яблоко1> и <яблоко2> синтаксически безупречен, но принимающая система со своей схемой с ним не согласится.
Как создать XML-файл
Понадобится любой текстовый редактор. Скопируйте структуру из примера выше, подставьте свои данные и сохраните файл с расширением .xml в кодировке UTF-8. В блокноте Windows есть классический подвох: если в диалоге «Сохранить как» оставить тип «Текстовые документы», блокнот молча допишет .txt, и получится orders.xml.txt, который программы не увидят. Выбирайте тип «Все файлы» или заключайте имя в кавычки: "orders.xml".
Если исходные данные уже лежат в JSON — из API или из таблицы — каркас удобнее собрать через конвертер JSON в XML, а потом переименовать теги под словарь приёмной стороны. Конвертер перенесёт данные, но не догадается, что Маркет ждёт <offer>, а ваша CRM — <Заказ>; названия тегов сверяйте с документацией той системы, куда файл отправляется.
FAQ
Чем открыть XML-файл без установки программ?
Браузером: перетащите файл в окно Chrome или Firefox — увидите дерево тегов. Короткий файл покажет и блокнот.
Чем XML отличается от JSON?
Синтаксисом и подходом. У XML — теги, атрибуты и схемы-валидаторы; у JSON — объекты и массивы в фигурных скобках. JSON короче и удобнее в коде, XML формальнее и по-прежнему обязателен для фидов, SOAP и формата документов Office. Подробно — в сравнении JSON и XML.
Как конвертировать XML в JSON и обратно?
Готовыми конвертерами: XML → JSON и JSON → XML работают прямо в браузере. Одна тонкость: в JSON нет атрибутов, поэтому конвертер выносит их в отдельные поля. Если атрибуты важны, прогоните сначала пару тестовых файлов и проверьте результат.
Почему XML-файл открывается кракозябрами?
Кодировка файла не совпадает с заявленной. Классика: файл сохранён в windows-1251, а пролог обещает UTF-8 — или кодировка не указана вовсе. Пересохраните файл в UTF-8 и подпишите это в прологе.
Можно ли открыть XML в Excel?
Да: «Данные» → «Получить данные» → «Из файла» → «Из XML». Excel построит таблицу по повторяющимся элементам. С глубокой вложенностью справляется неидеально — тогда проще сначала перевести файл в JSON и вытащить нужный уровень.
Чем «файл открывается» отличается от «файл валиден»?
Это два уровня проверки. Well-formed — синтаксическая корректность: теги закрыты, корень один, спецсимволы экранированы; это проверяет любой форматтер. Valid — соответствие схеме: у конкретной системы есть XSD или DTD, где расписано, какие теги обязательны и в каком порядке идут. Файл легко проходит форматтер и проваливается у приёмщика — поэтому перед отправкой фида или выгрузки сверяйтесь с требованиями принимающей стороны, а не только с синтаксисом.
Итого: посмотреть — браузером, править — VS Code, чинить и форматировать — форматтером, забирать данные — конвертером в JSON. Формат старше JSON, но фиды, sitemap и Office-документы никуда не денутся ещё долго, так что один раз разобраться в структуре точно окупится.
Попробуйте эти инструменты
Похожие статьи
JSON vs XML — какое выбрать для проекта
Сравнение JSON и XML: синтаксис, размер, скорость парсинга, читаемость. Когда JSON лучше, а когда XML.
JSON форматтер: зачем нужен и как использовать
Что такое форматирование JSON, отступы и пробелы, валидация, minify vs beautify, лучшие практики.
CSV в JSON: конвертация и когда нужна
Как преобразовать CSV в JSON, структура данных, обработка больших файлов, использование в JavaScript.
YAML — конфигурационный формат: полный гид
Синтаксис YAML, отступы, типы данных, отличие от JSON, использование в Docker, Kubernetes, CI/CD.