У меня есть два XML-файла, и я хочу объединить эти два файла в один.Но как?Я много пробовал, но ничего не помогает.Как вы можете видеть, объединенный XML оставил текст из второго атрибута, если он пришел из первого XML.Во-вторых, элемент должен быть упорядочен по Id / Name / whatevername первого атрибута.В-третьих, если узел не существует в XML 2, то он должен быть создан в том же месте, что и в XML 1.
Файлы XML, показанные здесь, являются просто фрагментом всего XML, естьнамного больше имен атрибутов.
Как я могу сделать это с C #?
XML 1
<APPLICATION>
<AC>
<CLASS Name="Hello1" Capt="do1"/>
<CLASS Name="Hello2" Capt="do2"/>
<CLASS Name="Hello5" Capt="do5"/>
<CLASS Name="Hello8" Capt="do8"/>
</AC>
<BO>
<ITEM Id="1" DefaultValue="name1"/>
<ITEM Id="3" DefaultValue="name3"/>
<ITEM Id="11" DefaultValue="name11"/>
<ITEM Id="12" DefaultValue="name12">
<VAL>
<REASON Id="Job1" SecondOne="Hallo"/>
</VAL>
</ITEM>
</BO>
<POP Id="Green" Value="Monster"/>
<POP Id="Blue" Value="Doggie"/>
XML 2
<APPLICATION>
<AC>
<CLASS Name="Hello1" Capt="dodo1"/>
<CLASS Name="Hello2" Capt="dodo2"/>
<CLASS Name="Hello3" Capt="dodo3"/>
<CLASS Name="Hello9" Capt="dodo9"/>
</AC>
<CARS Wheel="Fore" Default="45x255xZ"/>
<CARS Wheel="BACK" Default="45x255xZ"/>
<CARS Wheel="SPARE" Default="45x255xZ"/>
<BO>
<ITEM Id="1" DefaultValue="namename1"/>
<ITEM Id="3" DefaultValue=""/>
<ITEM Id="9" DefaultValue="name11"/>
<ITEM Id="10" DefaultValue="name12">
<VAL>
<REASON Id="Job1" SecondOne="Hallo"/>
</VAL>
</ITEM>
</BO>
XML должен выглядеть следующим образом после слияния:
<APPLICATION>
<AC>
<CLASS Name="Hello1" Capt="dodo1"/>
<CLASS Name="Hello2" Capt="dodo2"/>
<CLASS Name="Hello3" Capt="dodo3"/>
<CLASS Name="Hello5" Capt=""/>
<CLASS Name="Hello8" Capt=""/>
<CLASS Name="Hello9" Capt="dodo9"/>
</AC>
<CARS Wheel="Fore" Default="45x255xZ"/>
<CARS Wheel="BACK" Default="45x255xZ"/>
<CARS Wheel="SPARE" Default="45x255xZ"/>
<BO>
<ITEM Id="1" DefaultValue="namename1"/>
<ITEM Id="3" DefaultValue=""/>
<ITEM Id="9" DefaultValue="name11"/>
<ITEM Id="10" DefaultValue="name12">
<VAL>
<REASON Id="Job1" SecondOne="Hallo"/>
</VAL>
</ITEM>
<ITEM Id="11" DefaultValue=""/>
<ITEM Id="12" DefaultValue="">
<VAL>
<REASON Id="Job1" SecondOne=""/>
</VAL>
</ITEM>
</BO>
<POP Id="Green" Value=""/>
<POP Id="Blue" Value=""/>
Спасибо за все ответы, но все же у меня есть проблема, которую я не знаюкак тэги, так что я не могу жестко закодировать тэги.
Я просто должен дать вам пример, как это может выглядеть.Но в следующий раз, когда я получу свои XML-файлы, теги сверху могут быть совершенно другими.Вот где проблема.Поэтому я не могу сказать новый XElement ("BO", boChildren), потому что в следующий раз этот тег больше не будет существовать.
Или я не могу жестко закодировать этот ==> var cars = xDocuments.SelectMany(x => x.Root.Elements ("CARS")). Merge ();потому что в следующий раз, когда я получу свои XML-файлы, «АВТОМОБИЛИ» больше не будут существовать.