Формат XML – Что это и как его открыть?!
Файлик с расширением XML (формат XML) – это расширяемый язык разметки. Непонятно? – Вот и меня данное определение вводит в ступор, а обычного новичка (который пытается освоить компьютер) такой ответ не устраивает. В данной заметке я хочу вам рассказать – что же за формат такой XML и как его можно открыть (и для чего он нужен).
🔥 Лучшее в телеграм: Формат XML – Что это и как его. Присоединиться!
На самом деле XML – самый простой текстовый документ, структура которого может состоять из пользовательских тегов или других описаний документа.
Что такое формат XML
XML – это язык разметки, который создан для удобства кодирования и чтения как машинами, так и простыми смертными людьми. Делается это с помощью тегов, которые формируют структура документа и его параметры.
Если сравнить его с HTML, то в целом, задачи решают одинаковые, только в HTML все эти теги жестко прописаны и жирный будет определяться как , то в случае с XML мы можем сделать жирный как , т.е. разработчики сами определяют эти теги.
Я думаю вы уже поняли что XML не принадлежит к какой-то конкретной и определенной программе – это универсальный формат и использовать его может каждый. Например он используется для передачи персональных данных в Пенсионный Фонд РФ или же просто выступает промежуточным файлом при переносе данных из конфигурации 1С
Фишка XML в том, что даже если вы не знаете в какой программе он сформирован, то беглым взглядом можно прочитать и осознать информацию, которая в нем содержится.
Как открыть XML файл
Если вы впервые столкнулись с XML… не расстраивайтесь, формат очень распространенный и, раз уже мы знаем что это текст, то и открывается он любым текстовым редактором (только не вздумайте открывать его в MS Office Word)
Способ 1. Лучший текстовый редактор – Notepad++
Если вы достаточно часто сталкиваетесь с XML в своей жизни, то у вас обязательно должен быть установлен Notepad++! Данный текстовый редактор имеет огромный функционал и подсветку синтаксиса, которая так необходима при просмотрел XML. Notepad++ показывает XML формат в максимально удобном и усвояемом обычным человеком виде.
Если вы еще никогда не сталкивались с Notepad++, то вы просто обязаны его попробовать – просто маст хэв приложение на любом компьютере
Способ 2. Блокнот Windows
Если XML файл нужно отредактировать максимально быстро, то и самый простой блокнот сгодится. Кликните правой кнопкой мыши на файлике и в контекстном меню “Открыть с помощью…” и выберите в списке “Блокнот”.
В обычном блокноте Windows, к сожалению, нет подсветки синтаксиса, что несколько затрудняет восприятие информации… но по быстрому подправить вполне сгодится.
Способ 3. Браузер
Если нет надобности в редактировании, то XML файл можно открыть только для чтения в любом браузере. Я использую браузер Яндекс, но можно использовать даже ненавистный многим Internet Explorer. Для этого кликните правой кнопкой по файлу и выберите пункт “Открыть с помощью”, в списке найдите свой веб обозреватель…
Бывают такие ситуации, когда браузер попытается отобразить информацию согласно тегам… что нам совершенно не нужно – просто нажмите CTRL+ U для просмотра исходного кода документа.
Как можете видеть, браузер отображает более вменяемо информацию из XML файла в отличии от стандартного Блокнота.
Заключение
Вот мы и рассмотрели что такое XML файл и различные способы его открыть. Если разбирать вопрос более подробно, то многие читатели могут заметить, что в сети присутствует огромное количество онлайн сервисов для работы с XML – рассматривать их в разрезе данной заметки не вижу смысла, моя цель была рассказать как его просмотреть и отредактировать (по возможностями средствами самой ОС Windows)
JSON и XML для новичков
Всем привет! Это моя первая статья, немного волнительно, но потными ладошками все же пишу. Идея написания пришла ко мне после задачи на работе, которая была связана с направлением xml — файлов в ЦБ. Думаю, многие аналитики, работающие в банке, сталкивались или еще столкнутся с подобными задачами, поэтому хочу помочь будущим поколениям. (Скорее себе, так как все забывается. )
Сразу оговорюсь, что это лишь мой опыт, поэтому все будет объяснять на понятном МНЕ языке, но критику приветствую и всегда буду рада комментариям 🙂
Что такое эти ваши json и xml?
Итак, они были так похожи, но одновременно так отличались.
По сути два этих формата используются для передачи и хранения информации. Разница в том, что json можно преобразовать в объект JavaScript и обратно.
А вот с xml так не получится, потому что он используется в основном для кодирования файлов в читаемом формате.
В этом json есть атрибут «Персонал», в котором хранится информация о всех сотрудниках, с краткой информацией ФИО и возраст.
JSON состоит из объектов, которые заключаются в фигурные сточки <>. Внутри него находится пара: ключ (название параметра, свойство и тд) и значение.
В нашем примере есть пары: «Имя»-«Саша», «Фамилия»-«Петров» и тд. Они находятся внутри общего json-объекта, и принадлежать паре «Персонал» и словарь json-объектов с описанием сотрудников.
Аналогичный набор xml будет выглядеть так:
<Персонал> <Сотрудник><Имя>Саша</Имя> <Фамилия>Петров</Фамилия> <Отчество>Алексеевчи</Отчество> <Возраст>34</Возраст> </Сотрудник> <Сотрудник><Имя>Вася</Имя> <Фамилия>Иванов</Фамилия> <Отчество>Сергеевич</Отчество> <Возраст>37</Возраст> </Сотрудник> </Персонал>
Согласитесь: с виду, все вполне понятно, есть небольшие отличия в синтаксисе и все? Я тоже так думаю и даже скажу, что json можно легко преобразовать в xml.
Xml имеет свою кодировку, которую важно учитывать при создания файлов. (Учитесь на моих ошибках). Также есть xsd или xml-схема, которая создается для проверки правильности xml и в каком-то смысле упрощения ее создания.
XML состоит из тегов, которые вносятся в скобки <>. В нашем примере это Персонал, Сотрудник, Имя, Фамилия, Отчество, Возраст. Теги обеспечивают сложное кодирование данных для интеграции информационных потоков между различными системами.
Думаю, основной информации достаточно, так что можем приступить к работе с этими форматами в Python. Собственно для это мы с вами сегодня и собрались.
Знакомство в python
Для начала возьмем на обработку json, точнее попробуем его создать
import json #загружаем библиотеку #Создаем словарь с нашим json string = < "personal":[ < "FirstName":"Саша", "LastName":"Петров", "Age":"34" >, < "FirstName":"Вася", "LastName":"Иванов", "Age":"37" >] > # Преобразование словаря в JSON-строку json_string = json.dumps(string) # Преобразовываем JSON-строку в сам JSON, чтобы можно было к нему обращаться data = json.loads(json_string)
Теперь, когда у нас получилось создать json мы можем выгрузить определённый элемент или же поменять значение.
# Делаем обращения к первому элементу print(data.get('personal')[0]) # Поменяем возраст у первого сотрудника data['personal'][0]['Age'] = 56 # Проверим результат print(data.get('personal')[0])
Но проще всего менять значения в самом словаре и загружать его в json-файл.
# Поменяем возраст у первого сотрудника string['personal'][0]['Age'] = 56 # Проверим результат print(string.get('personal')[0]) #Записывае словарь в json-файл try: with open("data.json", "w") as json_file: json.dump(string, json_file) except: print("not loaded")
Здесь у нас идет обращения к объектам сначала первый объект «personal». Потом мы выбираем первого сотрудника, поэтому индекс 0 и название значения «Age».
Соответственно далее все уже зависит от ваших задач и желаний. Теперь познакомимся и с xml.
import xml.etree.ElementTree as ET # Загружаем библиотеку # Создаем основной элемент, в который будем добавлять последующие data_xml = ET.Element('personal') # Добавляем первого сотрудника employee = ET.SubElement(data_xml, 'employee') # Добавляем вложенные элементы в созданый employee employee_n = ET.SubElement(employee, 'Name') employee_n.text = "Саша" employee_l = ET.SubElement(employee, 'LastName') employee_l.text = "Петров" employee_a = ET.SubElement(employee, 'Age') employee_a.text = "34" # Добавляем второго сотрудника employee = ET.SubElement(data_xml, 'employee') # Добавляем вложенные элементы в созданый employee employee_n = ET.SubElement(employee, 'Name') employee_n.text = 'Вася' employee_l = ET.SubElement(employee, 'LastName') employee_l.text = 'Иванов' employee_a = ET.SubElement(employee, 'Age') employee_a.text = '37' # Посмотрим получившийся xml print(ET.dump(data_xml))
Тут мы создаем вложенный элемент методом SubElement, в котором указываем элемент, куда добавляем, и название. То есть в элемент data_xml добавляем вложенный элемент employee, а в него уже Name, LastName, Age. И с помощью метода text добавляем сами значения.
Соответсвенно, как и в прошлом случае мы можем обратиться к элементам и изменить их.
# Посмотрим элементы print(data_xml[0]) print(data_xml[0][1]) print(data_xml[0][1].text) # Поменяем фамилию data_xml[0][1].text="Сидоров" # Посмотрим элементы print(data_xml[0][1].text)
Все выглядит достаточно просто. Мы научились создавать, изменять, выгружать в файл json и xml. В следующем разделе, я опишу свой пример создания xml-файла с json внутри.
Мой опыт, заключение
Итак, однажды, ко мне пришла задача на создание автоматического xml-файла, я прочитала про библиотеку, посмотрела информацию и решила, что будет легко. Я быстро сделаю и получу свои лавры. НО! В теории все выглядит и звучит правда легко, а вот на практике.
Я взяла готовый xml, загрузила его и не поняла. Во-первых, получилось не с первого раза.
Во-вторых, был только один тег.
Спустя несколько дней мучения, я написала знакомому, которые открыл мне глаза нам всю ситуацию, а именно сказал: ты чего? это же json.
С этого момента все стало еще запутаннее и непонятно. Выглядело все примерно так:
Естественно, на просторах сети, я такого не встречала и пришлось придумывать что-то самой.
Поэтому я работала сначала с внутренним json, который меняла, добавляла новые объекты, а потом уже добавляла его в тег xml файла. Не хочу здесь писать более подробно про конкретный случай, поэтому описала вкратце.
В заключении: Очень надеюсь, что кому-то это поможет разобраться в непонятной теме.
Готова к замечаниям и критики, большое спасибо за потраченное время 🙂
При подготовке материала использовались источники:
https://www.itshneg.com/what-is-an-xml-file/
https://habr.com/ru/articles/757180/