---
title: XML diff-патчи
summary: Как изменять данные точечным патчем и проверять, что селектор попал в нужный узел.
section: scripting
kind: guide
status: example
tags: ["xml","diff","xpath","патч"]
sources: ["https://wiki.egosoft.com/X4%20Foundations%20Wiki/Modding%20Support/"]
---
## Сначала найдите исходный узел
Прочитайте файл своей версии игры. Выпишите путь, стабильный идентификатор элемента и текущее значение. Затем создайте патч в соответствующем относительном пути расширения.
Операции `add`, `replace` и `remove` решают разные задачи. Не заменяйте весь документ ради одного атрибута: большой патч сильнее зависит от обновлений и конфликтует с другими расширениями.
## Учебный пример
Возьмём вымышленный документ, не файл из игры:
```xml
```
Патч одного атрибута:
```xml
true
```
Ожидаемый результат - тот же документ с `enabled="true"`. Имя `items` и ID примера нельзя подставлять в настоящий мод без реального целевого файла.
## Проверьте селектор
1. Найдите совпадения в исходном документе.
2. Убедитесь, что найден именно нужный объект, а не одноимённый элемент другого типа.
3. Примените патч и сравните эффективный документ.
4. Запустите игру и проверьте эффект и журнал.
Ноль совпадений может означать неверную версию, неправильный путь или ещё не загруженную зависимость. Много совпадений - слишком широкий селектор. Безусловное подавление ошибок скрывает обе проблемы.
## Практический следующий шаг
Разберите [изменение прочности настоящего корабля](wiki:editing-parameters). Для нескольких модов, меняющих одно поле, проверьте [совместимость](wiki:compatibility) и итоговый документ.