← Назад к вопросам

Что такое XML?

1.0 Junior🔥 191 комментариев
#Веб-тестирование#Тестирование API

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

XML: Основы и Практическое Применение в Тестировании

XML (eXtensible Markup Language) — это язык разметки, используемый для хранения и передачи структурированных данных. Хотя JSON сейчас более популярен, XML остаётся критически важным форматом в корпоративных приложениях, API, конфигурациях и веб-сервисах. QA Engineer должен понимать XML для тестирования современных систем.

Определение и Назначение

XML — это текстовый формат, который описывает структуру данных с использованием пользовательских тегов. В отличие от HTML (который определяет, как данные выглядят), XML определяет, что означают данные.

Основные характеристики:

  • Самоописываемый — структура очевидна из содержимого
  • Иерархический — данные организованы в виде дерева
  • Расширяемый — можно создавать собственные теги
  • Читаемый — как для человека, так и для машин
  • Независимый от платформы — работает везде

Структура XML Документа

Основные Компоненты

1. XML Объявление

Первая строка документа указывает версию XML и кодировку:

<?xml version="1.0" encoding="UTF-8"?>

Это опциональная, но рекомендуемая строка.

2. Элементы (Tags)

Элементы — основной строительный блок XML. Состоят из открывающего и закрывающего тегов:

<имя_элемента>содержимое</имя_элемента>

Правила для тегов:

  • Должны начинаться с буквы или подчеркивания
  • Не могут содержать пробелы
  • Чувствительны к регистру (имеет значение)
  • Должны быть правильно вложены

Примеры:

<user>
  <name>John Doe</name>
  <email>john@example.com</email>
  <age>30</age>
</user>

Здесь:

  • <user> — родительский элемент (root element)
  • <name>, <email>, <age> — дочерние элементы

3. Атрибуты

Атрибуты предоставляют информацию об элементах в виде пар ключ-значение:

<user id="123" status="active">
  <name>John Doe</name>
</user>

Здесь:

  • id="123" — атрибут id
  • status="active" — атрибут status

Когда использовать атрибуты vs элементы:

<!-- Атрибуты — для метаданных -->
<book id="1" isbn="978-0-123456-78-9">
  <title>Learning XML</title>
</book>

<!-- Элементы — для содержимого -->
<book>
  <id>1</id>
  <title>Learning XML</title>
  <author>Jane Smith</author>
</book>

4. Комментарии

<!-- Это комментарий -->
<user>
  <!-- ID пользователя -->
  <id>123</id>
</user>

5. CDATA Секции

Для включения текста со специальными символами без экранирования:

<description>
  <![CDATA[
    Это описание содержит <специальные> символы & символы
  ]]>
</description>

Полный Пример XML Документа

<?xml version="1.0" encoding="UTF-8"?>
<company>
  <employee id="emp001" department="Engineering">
    <name>Alice Johnson</name>
    <email>alice@company.com</email>
    <phone>+7-999-123-45-67</phone>
    <salary currency="USD">120000</salary>
    <position>
      <title>Senior QA Engineer</title>
      <level>3</level>
    </position>
  </employee>
  
  <employee id="emp002" department="Development">
    <name>Bob Smith</name>
    <email>bob@company.com</email>
    <phone>+7-999-234-56-78</phone>
    <salary currency="USD">150000</salary>
    <position>
      <title>Backend Developer</title>
      <level>3</level>
    </position>
  </employee>
</company>

Этот документ описывает компанию с сотрудниками, где каждый сотрудник имеет несколько свойств.

XML vs JSON

Оба формата используются для передачи данных, но отличаются:

ПараметрXMLJSON
СинтаксисТеги и атрибутыОбъекты и массивы
РазмерБольше (многословный)Компактнее
Скорость парсингаМедленнееБыстрее
Поддержка атрибутовДаНет (нужны вложенные объекты)
КомментарииПоддерживаютсяНе поддерживаются
ПопулярностьКорпоративные системыСовременные API

Пример одинаковых данных:

<!-- XML -->
<user id="123">
  <name>John</name>
  <email>john@example.com</email>
</user>
// JSON
{
  "user": {
    "id": 123,
    "name": "John",
    "email": "john@example.com"
  }
}

Где Используется XML

1. SOAP Web Services

SOAP — это протокол для веб-сервисов, основанный на XML:

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetUser>
      <userId>123</userId>
    </GetUser>
  </soap:Body>
</soap:Envelope>

XML RPC и SOAP активно используются в банках, страховых компаниях и корпоративных системах.

2. RSS и Atom Feeds

Для подписки на новости и обновления:

<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Tech News</title>
    <item>
      <title>New API Released</title>
      <link>https://example.com/news/1</link>
      <pubDate>Mon, 23 Mar 2026 10:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>

3. Конфигурационные Файлы

Многие приложения используют XML для конфигов (Maven, Gradle, Spring):

<!-- pom.xml в Maven проекте -->
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0</version>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13</version>
    </dependency>
  </dependencies>
</project>

4. Office Documents

Formats like DOCX, XLSX, ODT основаны на XML (это zip-архивы с XML файлами).

5. Android и iOS

Андроид использует XML для layouts, manifests и ресурсов:

<!-- AndroidManifest.xml -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">
    
    <application>
        <activity android:name=".MainActivity" />
    </application>
</manifest>

6. Тестовые Отчёты

Maven и многие инструменты тестирования выдают результаты в XML:

<testsuites>
  <testsuite name="MyTestSuite" tests="5" failures="1" time="2.5">
    <testcase name="test_login" time="0.5" />
    <testcase name="test_register" time="0.3">
      <failure>Expected true but got false</failure>
    </testcase>
  </testsuite>
</testsuites>

Валидация XML

DTD (Document Type Definition)

Описывает структуру XML документа:

<?xml version="1.0"?>
<!DOCTYPE user [
  <!ELEMENT user (name, email)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT email (#PCDATA)>
]>
<user>
  <name>John</name>
  <email>john@example.com</email>
</user>

XSD (XML Schema)

Более мощный способ описания и валидации:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="user">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="name" type="xs:string"/>
        <xs:element name="email" type="xs:string"/>
        <xs:element name="age" type="xs:integer"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Практическое Применение для QA Engineer

1. Тестирование SOAP API

При тестировании SOAP веб-сервисов вы работаете с XML запросами и ответами.

2. Чтение Конфигов

Понимание XML помогает разобраться в конфигурационных файлах приложения.

3. Анализ Отчётов

Тестовые отчёты (JUnit, TestNG, NUnit) выдаются в XML. Вы можете парсить их для аналитики.

4. Парсинг Логов

Специализированные логирующие фреймворки могут выдавать события в XML.

5. Тестирование Данных

XML часто используется для подготовки тестовых данных или fixtures.

Инструменты для Работы с XML

  • XMLLint — валидация XML из командной строки
  • Postman — тестирование SOAP и XML API
  • SoapUI — специализированный инструмент для SOAP тестирования
  • Python xml.etree — парсинг XML в коде
  • XPath — язык для поиска элементов в XML

Пример XPath:

/company/employee[@id="emp001"]/name  <!-- Найти имя сотрудника с id emp001 -->
//employee[position]/level  <!-- Найти все уровни должностей -->

Заключение

XML — это:

✓ Язык разметки для структурированных данных
✓ Критический формат для SOAP, конфигов, документов
✓ Самоописываемый и иерархический
✓ Древний, но всё ещё широко используемый
✓ Необходимо знать QA Engineer для полноценного тестирования API и интеграций

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