что значит формат xml
XML Введение
Много языков базируются на XML; Некоторые примеры: XHTML, MathML, SVG, XUL, XBL, RSS, и RDF. Вы можете создать свой.
«Корректный» XML (правильно сформированный)
Правила оформления
Для корректного XML документа должны исполняться следующие условия:
Правильное оформление документа.
Соблюдаться все синтаксические правила XML.
Документ должен соответствовать семантическим правилам языка (которые обычно заданны в схеме XML или DTD (англ. Document Type Definition)).
Пример
Пример ниже показывает документ с тегом, который не закрывает сам себя и не имеет закрывающего тега (это неправильно оформленный XML документ).
Давайте посмотрим на корректную версию этого документа:
В большинство браузеров встроен дебаггер, который может идентифицировать плохо написанный XML документ.
Сущности
HTML и XML предлагают методы (которые называют сущности) для обращения к специальным зарезервированным символам (например угловые скобки, обозначающие начало и конец тега). Существует пять сущностей, которые вы обязательно должны знать:
Сущность | Символ | Описание |
---|---|---|
> | Знак больше (одна из угловых скобок) | |
& | & | Амперсанд |
« | « | Двойная кавычка |
‘ | ‘ | Одинарная кавычка (апостроф) |
Не смотря на то, что по умолчанию создано всего пять сущностей, вы можете добавить в документ свои сущности используя Document Type Definition. Например, создать новую &warning; сущность, можно так:
Отображение XML
Есть также много других мощных методов отображения XML, например, XSLT(англ. Extensible Stylesheet Language Transformations), который может использоваться для преобразование XML в другие языки такие, как HTML. Это делает XML очень универсальным.
Рекомендации
Эта статья является очень маленьким введением в XML, с очень маленьким количеством примеров и ссылок для того, чтобы вы могли начать работать с этим языком. Чтобы больше узнать про XML, вам придётся искать информацию и более информативные статьи в интернете.
Изучайте HTML (англ. HyperText Markup Language), знание HTML поможет вам лучше понять XML.
Смотрите также
XML формат
1. Что такое XML формат
Применяется формат XML сразу в нескольких направлениях:
Читаемость – главная идея XML-документа. Даже без дополнительных инструментов можно открыть файл и, бегло пробежавшись глазами по описанным символам, легко разобраться, какие инструкции заложены внутри, и какие события запустятся при непосредственном использовании по прямому назначению.
Базируется язык разметки на кодировке Юникод (UTF-8 и UTF-16) и легко подстраивается под любые конкретные нужды (главное соблюдать некоторые обязательные правила – к примеру, размещать в первой строчке документа обязательную конструкцию, определяющую версию XML, кодировке и подключаемых библиотеках). Но то лишь нюансы – куда важнее разобраться, как можно открыть документ XML и получить информативный текст, а не набор неразборчивых символов.
Итак, рассмотрим популярные способы для открытия XML файл.
2. Открыть XML через блокнот
Операционная система Windows в предустановленном состоянии сразу же способна взаимодействовать с файлами практически любых текстовых форматов. Да, не вся информация выглядит в первозданном виде (некоторые символы из-за нечитаемой кодировки отображаются некорректно) и все же уловить основную суть не проблема! Главное – вооружиться терпением и перепробовать все возможные настройки. Какие? Инструкция ниже:
1. Первая задача – загрузить нужный файл на компьютер в любую папку. Дальше остается или заглянуть в пуск, набрав в поиске «Блокнот», а там уж открыть документ.
Или перейти к конкретному каталогу, куда загружен XML документ, и уже оттуда вызывать меню взаимодействия и выбирать нужное действие.
Если же в вызываемом списке не появился «Блокнот», то придется нажать на пункт «Выбрать другое приложение». И уже оттуда нажать на необходимую кнопку.
2. Как результат – документ открыт в первозданном виде. Теги, атрибуты, описание действий. Да, не слишком информативно (в сути разберутся лишь программисты и верстальщики), а потому – стоит искать альтернативные источники вдохновения.
3. Открыть XML через браузеры
Раз уж формат XML появился для экспериментального «строительства» сайтов (на данный момент нишу верстки занимает HTML и таблица стилей CSS), то и Google Chrome и Mozilla Firefox с легкостью воспринимают всю спрятанную в документах информацию. Да еще и выводят все теги и атрибуты не только в виде текста, но и в соответствии с определенным оформлением (если внутри описана таблица, то на выходе появится информация, уложенная по полочкам строчек и столбцов).
Как загрузить XML в браузер? Элементарно! Можно спокойненько перетащить требуемый документ в любое открытое окно, а дальше останется лишь наблюдать за результатом.
И вот весь текст на экране, в строке поиска – каталог размещения открывшегося файла, а по центру экрана – несколько рекомендаций непосредственно от браузера. К примеру, Google Chrome может предупредить, нарушен ли где-то синтаксис, нужны ли дополнительные правки и почему, собственно, возникают проблемы.
В Firefox ситуация та же, правда, ошибки и предупреждения выводятся на русском языке!
Стоит ли всегда открывать XML через браузер? Однозначно ответить на вопрос невозможно. С одной стороны – можно сразу же посмотреть, как выглядит формат не «на бумаге», а в действии. Кроме того, кодировку не нужно выбирать (определяется автоматически), да и устанавливать дополнительные программы не нужно. Но то лишь со стороны непосредственного использования. Если же нужны правки, изменения или хоть какое-то взаимодействие с документов, то без дополнительных приложений точно не обойтись.
4. XML файлы через продукты Microsoft Office
Пакет программ от Microsoft с файлами XML взаимодействовать умеет, но лишь по части отображения конечной информации (после выполнения всех процессоров, заложенных в документе), а не для непосредственного взаимодействия и редактирования. И Word, и Excel сработают, как калькуляторы, в которые занесли целый пример, и нажали кнопку «Посчитать». В итоге, на экране и появится результат, без какой-либо дополнительной информации.
4.1. Открыть XML в Microsoft Word:
1. Тут два пути, как и с блокнотом. Можно или сразу открыть приложение и в выпадающем меню выбрать «Открыть».
Или же перейти в необходимый каталог и уже оттуда, нажав правой кнопкой, вызвать список действий.
Как отмечает Word, офисного набора для отображения XML в другом виде недостаточно, нужны дополнительные плагины и инструкции, устанавливаемые «сверху». В ином случае, можно и не рассчитывать на полноценное взаимодействие.
4.2. Открыть XML в Microsoft Excel:
1. Первоначальные действия все те же.
2. Из реальных отличий – необходимость выбрать сценарий при взаимодействии с XML. Стоит ли Excel открывать все данные, как таблицу или же в виде книги с определенными задачами.
3. Перепробовать можно разные варианты, однако результат такой же, как и в Word – текст, появившийся после обработки всех тегов, атрибутов и процессов, но разбитый на ячейки.
Словом, пакет офисных программ от Microsoft не выполняет и половины требуемых задач – не позволяет редактировать текст, не отображает системные данные, да еще и с трудом обрабатывает некоторую информацию и частенько выдает ошибки. Кроме того, в последних версиях Word и Excel за 2016 год, разработчики практически отказались от возможности взаимодействия с XML, а потому и рассчитывать на подобного со скрипом работающего помощника точно не стоит.
5. Официальные редакторы для открытия XML
Список программ, специализирующихся на взаимодействии с XML огромен, из-за чего невозможно перечислить и половины вариантов. А потому – инструкция по использованию на примере XML Marker, бесплатно распространяемом инструменте, воспринимаемом разную кодировку, подсвечивающем синтаксис, отображающем одновременно и древо документа, и всю текстовую информацию. Кроме того, разработчики обещают автоматические обновления, исправляющие некоторые ошибки и недоработки, целую коллекцию дополнительных советов и рекомендаций, позволяющих, к примеру, избавиться от каких-нибудь ошибок при вводе (даже некоторые неправильно заданные теги в конце информационного кода могут привести к проблемам при воспроизведении).
Из дополнительных плюсов – поддержка разных языков, возможность менять формат, а еще – невероятная скорость обработки данных (даже состоящие из тысячи ячеек таблицы открываются за считанные секунды). И, раз уж подобный редактор настолько всесилен, почему бы не приступить к установке?
1. Прежде всего, придется заглянуть на официальный сайт. И в меню слева найти кнопку Download.
На открывшейся странице остается лишь выбрать необходимую для загрузки версию. Доступно несколько вариантов – и совсем «древние» и «тестируемые», и последние со всеми необходимыми обновлениями. Вариантов, с какого сервера все сохранять, тоже несколько – тут уж дело вкуса (в любом случае, дистрибутив весит всего несколько десятков мегабайт).
2. Дальше – запустить дистрибутив, прочитать строки приветствия, нажать Next.
Принять все лицензии и пользовательское соглашение.
Выбрать папку для установки (какой-то гигантской разницы нет).
Последний этап – выбрать, нужны ли ярлыки на рабочем столе и в меню «Пуск», и стоит ли ассоциировать формат «XML» с программой. Если подобной необходимости нет, то все галочки можно спокойно поснимать.
После завершения установки останется лишь запустить инструмент и приступить к непосредственному использованию.
3. Итак, для запуска нужного файла нужно нажать на пункт «File» и вызвать выпадающее меню, затем – кликнуть на «Open» для непосредственного перехода к поиску.
После открытия на экране появится все сохраненная в документе информация, с поддержкой всех атрибутов и тегов. Кроме того, любые данные разрешат править и изменять, а затем – просматривать визуальные копии в дополнительном окне.
Ну, и коротко о ключевых возможностей. Слева – иерархия всех данных (какие теги складываются, какая информация важнее и все остальное), справа – выделенный код, снизу – отображение. Если появятся какие-то ошибки, то система сразу же обо всем предупредит, да еще и выделит место, где нужны срочные изменения.
В общем, идеальный инструмент для тех, кто не просто что-то открывает, а реально взаимодействует и применяет.
Из минусов – цена. Разработчики предлагают или абонентскую плату с переводом денег каждый месяц, или одноразовый платеж. Впрочем, опробовать инструмент можно совершенно бесплатно без функциональных ограничений, но на основе пробного периода.
6. Редактирование XML-файлов онлайн
Если необходимость платить реальные деньги за виртуальный продукт не по нраву, то остается последний вариант – воспользоваться редактором, который читает формат XML онлайн. Ресурсов с подобным функционалом много, но главный помощник расположен по адресу – xmlgrid.net
Из ключевых возможностей – запуск нужного файла через вкладку непосредственного «Открытия». Еще можно вставлять ссылку на документ и применять теги и атрибуты вручную и с нуля. Кроме воспроизведения, можно посмотреть демонстрацию о языке XML, где разработчики постарались объяснить способы применения различных возможностей и варианты использования разметки.
Что такое XML
Логическая разметка данных
Когда мы говорили о разметке в Маркдауне, то там смысл был такой: есть текст, а мы его размечаем специальными символами, чтобы он хорошо выглядел. Теперь перейдём на этап выше — будем форматировать данные на уровне логики с помощью XML.
👉 XML нужен для работы с техническим текстом, где всё строго, упорядоченно и логично. Его, конечно, можно применить и к художественному тексту, но выйдет так себе.
Что такое XML
XML — это сокращение от eXtensible Markup Language, а переводится это как «Расширяемый язык разметки». Смысл XML в том, чтобы выстроить внутри документа логическую структуру — чтобы было видно, что к чему относится и как всё связано между собой, в каком формате представлены данные.
С помощью XML можно:
И многое другое, где нужен порядок, структура и работа с текстовыми данными.
Сила XML
Сила XML в том, что данные здесь представляются как обычный текст, размеченный тегами (как в HTML). Например, чтобы записать оргструктуру компании в XML, не нужно рисовать схему в графическом редакторе, достаточно правильно разметить текст с именами и должностями. Файлики получаются маленькими, из легко обрабатывать.
И ещё сила XML в том, что эти данные может прочитать и обработать компьютер. Например, если мы передаём ему оргструктуру компании, компьютер поймёт её: кто кому подчиняется, что куда входит и т. д. Для сравнения: если скормить компьютеру схему, нарисованную в графическом редакторе, он её не поймёт.
Если XML хорошо составлен, его также может понять человек.
Как устроен XML
Внешне XML очень похож на HTML — в нём тоже всё пишется в угловых скобках, есть закрывающие теги и параметры: аналоги классов и стилей. Но, в отличие от HTML, здесь нет обязательных тегов или вообще каких-то обязательных элементов. Объясним, как это работает, на примере.
Допустим, у нас есть такой текст, из которого нужно сделать XML-документ:
«По состоянию на 21 октября 2021 журнал Код работает и в редакции есть главред Максим Ильяхов и автор Михаил Полянин»
Первое, что нам нужно сделать — написать в документе, что перед нами именно XML:
Этот параметр говорит, что ниже будет XML-разметка. Иначе программа-обработчик не будет знать, что с ним делать — рисовать как HTML или выводить как просто текст?
Внутри XML-документа всегда есть корневой элемент — внутри него лежит всё остальное. Так как в XML мы придумываем названия для разметки сами, то пусть этот элемент будет называться actual (это название может быть любым):
👉 Комментарии в XML такие же, как в HTML.
Теперь разбираем содержимое. Первое, что мы видим в документе, — это дата, поэтому можем сделать отдельный раздел со статусом издания. В него будет входить значение Active (издание работает) и два параметра — дата последней проверки и статус этой проверки. Сам элемент мы назовём status:
Это очень похоже на стили и классы в HTML, но работает иначе: мы просто указываем параметры и их значения, а не подключаем какие-то внешние данные или правила.
Также вы могли заметить, что мы пишем дату в нестандартном формате (с точки зрения компьютера). Так можно: если мы потом будем писать обработчик этого XML, мы сможем научить его читать именно этот формат даты.
Это история о том, что XML — это просто полочки, на которые мы раскладываем данные. Какие там данные — ему не важно.
Добавим ниже сведения про название журнала:
Новый элемент мы назвали media — так человеку будет проще прочитать и понять, что внутри, а компьютеру всё равно.
Последнее — добавим информацию о составе редакции. Обратите внимание, что появилась вложенная структура: внутри элемента person есть три дочерних элемента: name, lastname и role. Это значит, что они относятся к родительскому элементу, а не живут сами по себе:
Таким способом можно разобрать на логические составляющие любой технический или информационный документ — от инструкции к чайнику до ежегодного отчёта для инвесторов. Главное — не запутаться в элементах и чётко понимать, что от чего зависит и куда вкладывается.
Где нужен XML
XML применяют везде, где нужно выделить логическое содержимое документа, чтобы потом его можно было как-то обработать. Например, если у вас есть размеченный XML-файл с названием и характеристиками товаров, то можно научить сервер обрабатывать его как угодно: выводить название в заголовке или простым текстом, понимать, где лежит цена, откуда брать описание и к какому разделу отнести этот товар.
Ещё XML применяют в API, когда идёт ответ от сервера в виде XML-файлов.
Что дальше
В другой статье придумаем свой XML-формат и научим сервер с ним работать.
Что значит формат xml
Формат xml относится к файлам расширяемого языка разметки. Представляет собой обычный текстовый документ, структура которого отображает описание документа и пользовательские теги. Привлекательная особенность xml в том, что он позволяет прочитать и понять содержащуюся информацию и для этого совсем не обязательно знать, в какой программе файл создавался.
Описание
Особенности языка
Обеспечить открытие файлов xml универсальными средствами, без использования дополнительных инструментов, позволяет принцип кодировки Юникод (UTF-8 и UTF-16). Благодаря этому документ доступен для ознакомления, в нём несложно разобраться с символами, содержанием прописанных инструкций и последовательностью запускаемых событий. Язык разметки отличается гибкостью и легко подстраивается под нужды пользователя. Главное — знать и соблюдать основные правила. Начало документа xml, его первая строка должны содержать обязательную конструкцию, указывающую на версию xml, принцип кодировки и подключаемые для этого библиотеки. Этот язык является универсальным и не относится к какой-либо строго определённой программе. Открыть документ в виде читаемого текста, а не набора непонятных символов, совсем не сложно.
Программы для открытия xml
Популярный и активно используемый формат классифицируется как текст и без труда открывается в простом текстовом редакторе. Если пользователь ещё не знаком с подобными файлами и не знает, чем открыть xml, то система может сделать это по умолчанию. Однако следует отметить, что всем известный MS Office Word для этих целей не подходит.
Вывод. Для открытия xml-файлов существует несколько программных возможностей, заложенных в самой ОС Windows. Новичкам этого вполне достаточно, а продвинутые пользователи знают, что в сети есть множество доступных онлайн-сервисов для работы с файлами с расширением xml.
Что такое XML
Если вы тестируете API, то должны знать про два основных формата передачи данных:
XML, в переводе с англ eXtensible Markup Language — расширяемый язык разметки. Используется для хранения и передачи данных. Так что увидеть его можно не только в API, но и в коде.
Этот формат рекомендован Консорциумом Всемирной паутины (W3C), поэтому он часто используется для передачи данных по API. В SOAP API это вообще единственно возможный формат входных и выходных данных!
См также:
Что такое API — общее знакомство с API
Что такое JSON — второй популярный формат
Введение в SOAP и REST: что это и с чем едят — видео про разницу между SOAP и REST.
Так что давайте разберемся, как он выглядит, как его читать, и как ломать! Да-да, а куда же без этого? Надо ведь выяснить, как отреагирует система на кривой формат присланных данных.
Содержание
Как устроен XML
Возьмем пример из документации подсказок Дадаты по ФИО:
И разберемся, что означает эта запись.
В XML каждый элемент должен быть заключен в теги. Тег — это некий текст, обернутый в угловые скобки:
Текст внутри угловых скобок — название тега.
Тега всегда два:
Ой, ну ладно, подловили! Не всегда. Бывают еще пустые элементы, у них один тег и открывающий, и закрывающий одновременно. Но об этом чуть позже!
С помощью тегов мы показываем системе «вот тут начинается элемент, а вот тут заканчивается». Это как дорожные знаки:
— На въезде в город написано его название: Москва
— На выезде написано то же самое название, но перечеркнутое: Москва*
* Пример с дорожными знаками я когда-то давно прочитала в статье Яндекса, только ссылку уже не помню. А пример отличный!
Корневой элемент
В любом XML-документе есть корневой элемент. Это тег, с которого документ начинается, и которым заканчивается. В случае REST API документ — это запрос, который отправляет система. Или ответ, который она получает.
Чтобы обозначить этот запрос, нам нужен корневой элемент. В подсказках корневой элемент — «req».
Он мог бы называться по другому:
Да как угодно. Он показывает начало и конец нашего запроса, не более того. А вот внутри уже идет тело документа — сам запрос. Те параметры, которые мы передаем внешней системе. Разумеется, они тоже будут в тегах, но уже в обычных, а не корневых.
Значение элемента
Значение элемента хранится между открывающим и закрывающим тегами. Это может быть число, строка, или даже вложенные теги!
Вот у нас есть тег «query». Он обозначает запрос, который мы отправляем в подсказки.
Внутри — значение запроса.
Это как если бы мы вбили строку «Виктор Иван» в GUI (графическом интерфейсе пользователя):
Пользователю лишняя обвязка не нужна, ему нужна красивая формочка. А вот системе надо как-то передать, что «пользователь ввел именно это». Как показать ей, где начинается и заканчивается переданное значение? Для этого и используются теги.
Система видит тег «query» и понимает, что внутри него «строка, по которой нужно вернуть подсказки».
Параметр count = 7 обозначает, сколько подсказок вернуть в ответе. Если тыкать подсказки на демо-форме Дадаты, нам вернется 7 подсказок. Это потому, что туда вшито как раз значение count = 7. А вот если обратиться к документации метода, count можно выбрать от 1 до 20.
Откройте консоль разработчика через f12, вкладку Network, и посмотрите, какой запрос отправляется на сервер. Там будет значение count = 7.
Атрибуты элемента
У элемента могут быть атрибуты — один или несколько. Их мы указываем внутри отрывающегося тега после названия тега через пробел в виде
Зачем это нужно? Из атрибутов принимающая API-запрос система понимает, что такое ей вообще пришло.
Например, мы делаем поиск по системе, ищем клиентов с именем Олег. Отправляем простой запрос:
А в ответ получаем целую пачку Олегов! С разными датами рождения, номерами телефонов и другими данными. Допустим, что один из результатов поиска выглядит так:
Давайте разберем эту запись. У нас есть основной элемент party.
У него есть 3 атрибута:
Внутри party есть элементы field.
У элементов field есть атрибут name. Значение атрибута — название поля: имя, дата рождения, тип или номер телефона. Так мы понимаем, что скрывается под конкретным field.
Это удобно с точки зрения поддержки, когда у вас коробочный продукт и 10+ заказчиков. У каждого заказчика будет свой набор полей: у кого-то в системе есть ИНН, у кого-то нету, одному важна дата рождения, другому нет, и т.д.
Но, несмотря на разницу моделей, у всех заказчиков будет одна XSD-схема (которая описывает запрос и ответ):
— есть элемент party;
— у него есть элементы field;
— у каждого элемента field есть атрибут name, в котором хранится название поля.
А вот конкретные названия полей уже можно не описывать в XSD. Их уже «смотрите в ТЗ». Конечно, когда заказчик один или вы делаете ПО для себя или «вообще для всех», удобнее использовать именованные поля — то есть «говорящие» теги. Какие плюшки у этого подхода:
— При чтении XSD сразу видны реальные поля. ТЗ может устареть, а код будет актуален.
— Запрос легко дернуть вручную в SOAP Ui — он сразу создаст все нужные поля, нужно только значениями заполнить. Это удобно тестировщику + заказчик иногда так тестирует, ему тоже хорошо.
В общем, любой подход имеет право на существование. Надо смотреть по проекту, что будет удобнее именно вам. У меня в примере неговорящие названия элементов — все как один будут field. А вот по атрибутам уже можно понять, что это такое.
Помимо элементов field в party есть элемент attribute. Не путайте xml-нотацию и бизнес-прочтение:
У элемента attribute есть атрибуты:
Такая вот XML-ка получилась. Причем упрощенная. В реальных системах, где хранятся физ лица, данных сильно больше: штук 20 полей самого физ лица, несколько адресов, телефонов, емейл-адресов…
Но прочитать даже огромную XML не составит труда, если вы знаете, что где. И если она отформатирована — вложенные элементы сдвинуты вправо, остальные на одном уровне. Без форматирования будет тяжеловато…
А так всё просто — у нас есть элементы, заключенные в теги. Внутри тегов — название элемента. Если после названия идет что-то через пробел: это атрибуты элемента.
XML пролог
Иногда вверху XML документа можно увидеть что-то похожее:
Эта строка называется XML прологом. Она показывает версию XML, который используется в документе, а также кодировку. Пролог необязателен, если его нет — это ок. Но если он есть, то это должна быть первая строка XML документа.
UTF-8 — кодировка XML документов по умолчанию.
XSD-схема
XSD (XML Schema Definition) — это описание вашего XML. Как он должен выглядеть, что в нем должно быть? Это ТЗ, написанное на языке машины — ведь схему мы пишем… Тоже в формате XML! Получается XML, который описывает другой XML.
Фишка в том, что проверку по схеме можно делегировать машине. И разработчику даже не надо расписывать каждую проверку. Достаточно сказать «вот схема, проверяй по ней».
Если мы создаем SOAP-метод, то указываем в схеме:
Поэтому зачем запускать сложную процедуру, если запрос заведом «плохой»? И выдавать ошибку через 5 минут, а не сразу? Валидация по схеме помогает быстро отсеять явно невалидные запросы, не нагружая систему.
Более того, похожую защиту ставят и некоторые программы-клиенты для отправки запросов. Например, SOAP Ui умеет проверять ваш запрос на well formed xml, и он просто не отправит его на сервер, если вы облажались. Экономит время на передачу данных, молодец!
А простому пользователю вашего SOAP API схема помогает понять, как составить запрос. Кто такой «простой пользователь»?
Итого, как используется схема при разработке SOAP API:
Правильный запрос | Неправильный запрос |
---|---|
Нет обязательного поля name | |
Опечатка в названии тега (mail вместо email) | |
. | . |
Попробуем написать для него схему. В запросе должны быть 3 элемента (email, name, password) с типом «string» (строка). Пишем:
А в WSDl сервиса она записана еще проще:
Конечно, в схеме могут быть не только строковые элементы. Это могут быть числа, даты, boolean-значения и даже какие-то свои типы:
А еще в схеме можно ссылаться на другую схему, что упрощает написание кода — можно переиспользовать схемы для разных задач.
Практика: составляем свой запрос
Ок, теперь мы знаем, как «прочитать» запрос для API-метода в формате XML. Но как его составить по ТЗ? Давайте попробуем. Смотрим в документацию. И вот почему я даю пример из Дадаты — там классная документация!
Что, если я хочу, чтобы мне вернуть только женские ФИО, начинающиеся на «Ан»? Берем наш исходный пример:
В первую очередь меняем сам запрос. Теперь это уже не «Виктор Иван», а «Ан»:
Далее смотрим в ТЗ. Как вернуть только женские подсказки? Есть специальный параметр — gender. Название параметра — это название тегов. А внутри уже ставим пол. «Женский» по английски будет FEMALE, в документации также. Итого получили:
Ненужное можно удалить. Если нас не волнует количество подсказок, параметр count выкидываем. Ведь, согласно документации, он необязательный. Получили запрос:
Вот и все! Взяли за основу пример, поменяли одно значение, один параметр добавили, один удалили. Не так уж и сложно. Особенно, когда есть подробное ТЗ и пример )))
Попробуй сам!
Напишите запрос для метода MagicSearch в Users. Мы хотим найти всех Ивановых по полному совпадению, на которых висят актуальные задачи.
Well Formed XML
Разработчик сам решает, какой XML будет считаться правильным, а какой нет. Но есть общие правила, которые нельзя нарушать. XML должен быть well formed, то есть синтаксически корректный.
Чтобы проверить XML на синтаксис, можно использовать любой XML Validator (так и гуглите). Я рекомендую сайт w3schools. Там есть сам валидатор + описание типичных ошибок с примерами.
В готовый валидатор вы просто вставляете свой XML (например, запрос для сервера) и смотрите, всё ли с ним хорошо. Но можете проверить его и сами. Пройдитесь по правилам синтаксиса и посмотрите, следует ли им ваш запрос.
Правила well formed XML:
Давайте пройдемся по каждому правилу и обсудим, как нам применять их в тестировании. То есть как правильно «ломать» запрос, проверяя его на well-formed xml. Зачем это нужно? Посмотреть на фидбек от системы. Сможете ли вы по тексту ошибки понять, где именно облажались?
1. Есть корневой элемент
Нельзя просто положить рядышком 2 XML и полагать, что «система сама разберется, что это два запроса, а не один». Не разберется. Потому что не должна.
И если у вас будет лежать несколько тегов подряд без общего родителя — это плохой xml, не well formed. Всегда должен быть корневой элемент:
Нет | Да |
---|---|
Есть элементы «test» и «dev», но они расположены рядом, а корневого, внутри которого все лежит — нету. Это скорее похоже на 2 XML документа | А вот тут уже есть элемент credential, который является корневым |
Что мы делаем для тестирования этого условия? Правильно, удаляем из нашего запроса корневые теги!
2. У каждого элемента есть закрывающийся тег
Тут все просто — если тег где-то открылся, он должен где-то закрыться. Хотите сломать? Удалите закрывающийся тег любого элемента.
Но тут стоит заметить, что тег может быть один. Если элемент пустой, мы можем обойтись одним тегом, закрыв его в конце:
Это тоже самое, что передать в нем пустое значение
Аналогично сервер может вернуть нам пустое значение тега. Можно попробовать послать пустые поля в Users в методе FullUpdateUser. И в запросе это допустимо (я отправила пустым поле name1), и в ответе SOAP Ui нам именно так и отрисовывает пустые поля.
Итого — если есть открывающийся тег, должен быть закрывающийся. Либо это будет один тег со слешом в конце.
Для тестирования удаляем в запросе любой закрывающийся тег.
3. Теги регистрозависимы
Как написали открывающий — также пишем и закрывающий. ТОЧНО ТАК ЖЕ! А не так, как захотелось.
А вот для тестирования меняем регистр одной из частей. Такой XML будет невалидным
4. Правильная вложенность элементов
Элементы могут идти друг за другом
Один элемент может быть вложен в другой
Но накладываться друг на друга элементы НЕ могут!
5. Атрибуты оформлены в кавычках
Даже если вы считаете атрибут числом, он будет в кавычках:
Для тестирования пробуем передать его без кавычек:
Итого
XML (eXtensible Markup Language) используется для хранения и передачи данных.
Передача данных — это запросы и ответы в API-методах. Если вы отправляете SOAP-запрос, вы априори работаете именно с этим форматом. Потому что SOAP передает данные только в XML. Если вы используете REST, то там возможны варианты — или XML, или JSON.
Хранение данных — это когда XML встречается внутри кода. Его легко понимает как машина, так и человек. В формате XML можно описывать какие-то правила, которые будут применяться к данным, или что-то еще.
Вот пример использования XML в коде open-source проекта folks. Я не знаю, что именно делает JacksonJsonProvider, но могу «прочитать» этот код — есть функционал, который мы будем использовать (featuresToEnable), и есть тот, что нам не нужен(featuresToDisable).
Формат XML подчиняется стандартам. Синтаксически некорректный запрос даже на сервер не уйдет, его еще клиент порежет. Сначала проверка на well formed, потом уже бизнес-логика.
Правила well formed XML:
Если вы тестировщик, то при тестировании запросов в формате XML обязательно попробуйте нарушить каждое правило! Да, система должна уметь обрабатывать такие ошибки и возвращать адекватное сообщение об ошибке. Но далеко не всегда она это делает.
А если система публичная и возвращает пустой ответ на некорректный запрос — это плохо. Потому что разработчик другой системы налажает в запросе, а по пустому ответу даже не поймет, где именно. И будет приставать к поддержке: «Что же у меня не так?», кидая информацию по кусочкам и в виде скринов исходного кода. Оно вам надо? Нет? Тогда убедитесь, что система выдает понятное сообщение об ошибке!
Что такое JSON — второй популярный формат
PS — больше полезных статей ищите в моем блоге по метке «полезное». А полезные видео — на моем youtube-канале