У меня есть два файла XML, которые генерируются другим приложением, для которого я не контролирую. Первый - это файл настроек, а второй - список изменений, которые должны быть применены к первому.Слияние XML-файла со списком изменений
Основные настройки файла:
<?xml version="1.0"?>
<preset>
<var id="9" opt="0" val="6666666"/>
<var id="9" opt="1" val="10000000"/>
<var id="9" opt="2" val="10000000"/>
<var id="9" opt="3" val="10000000"/>
<var id="9" opt="4" val="0"/>
<var id="10" opt="0" val="4"/>
<var id="11" opt="0" val="0"/>
<var id="15" opt="0" val="75"/>
<var id="22" opt="0" val="0,0,127,516" type="rect(l,t,r,b)"/>
<var id="23" opt="0" val="27,18,92,66" type="rect(l,t,r,b)"/>
<var id="24" opt="0" val="320"/>
... Skip 300 lines ...
</preset>
А вот пример изменения:
<?xml version="1.0"?>
<preset>
<var id="15" opt="0" val="425"/>
<var id="22" opt="0" val="0,0,127,776" type="rect(l,t,r,b)"/>
<var id="26" opt="0" val="147"/>
<var id="27" opt="0" val="147"/>
<var id="109" opt="1" val="7"/>
<var id="126" opt="0" val="6,85,85,59" type="crv(t,m,b,vm)"/>
<var id="157" opt="0" val="1"/>
... Skip 10 lines ...
</preset>
Каждая переменная имеет идентификатор и оптимизация, ID относится. В принципе, я ищу, чтобы заменить строки, где id="#"
и opt="#"
совпадают с версией из файла изменений. В приведенном выше примере значение для id="15" opt="0"
изменилось бы с 75 до 425.
Был ли какой-либо чистый способ сделать это на C#? Сперва мысль, чтение в виде текста и переключение изменений с использованием метода find-replace кажется самым чистым. Подход, обрабатывающий это как XmlDocument
, кажется, намного больше работает.
Это одноразовая вещь или что-то, что вам придется делать на регулярной основе? – Josh
Регулярная основа. В основном пользователь сохранит изменения, которые SDK автоматически генерирует, и я объединю их с исходными настройками. –