--- 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) и итоговый документ.