У меня есть два 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="#"
и opt="#"
совпадают с версией из файла "change". В приведенном выше примере значение для id="15" opt="0"
изменится с 75 на 425.
Был бы какой-нибудь чистый способ сделать это в C #? На первый взгляд, чтение в текстовом виде и пошаговое выполнение изменений с использованием метода поиска-замены кажется наиболее чистым. Подход, рассматривающий это как XmlDocument
, кажется гораздо более трудоемким.