Scal dwa XElements
Nie jestem do końca pewien, jak o to zapytać, czy nawet to istnieje, ale muszę połączyć dwa elementy XElements, z których jeden ma pierwszeństwo przed drugim, aby stać się tylko jednym elementem.
Preferowane są tutaj VB.NET i Linq, ale każdy język byłby pomocny, gdyby pokazał, jak to zrobić bez mojego kodowania, aby ręcznie wybrać i rozwiązać każdy element i atrybut.
Załóżmy na przykład, że mam dwa elementy. Humoruj mnie, że są tak różne, jak są.
1
<HockeyPlayer height="6.0" hand="left">
<Position>Center</Position>
<Idol>Gordie Howe</Idol>
</HockeyPlayer>
2.
<HockeyPlayer height="5.9" startinglineup="yes">
<Idol confirmed="yes">Wayne Gretzky</Idol>
</HockeyPlayer>
Rezultatem scalenia byłoby
<HockeyPlayer height="6.0" hand="left" startinglineup="yes">
<Position>Center</Position>
<Idol confirmed="yes">Gordie Howe</Idol>
</HockeyPlayer>
Zauważ kilka rzeczy:height
wartość atrybutu # 1 zastąpiła # 2. Thehand
atrybut i wartość zostały po prostu skopiowane z # 1 (nie istnieje w # 2). Thestartinglineup
atrybut i wartość z # 2 zostały skopiowane (nie istnieje w # 1). ThePosition
element # 1 został skopiowany (nie istnieje w # 2). TheIdol
wartość elementu w # 1 przesłania # 2, ale # 2 atrybut atrybutuconfirmed
(nie istnieje w # 1) jest kopiowany.
Net net, # 1 ma przewagę nad # 2, gdzie występuje konflikt (co oznacza, że oba mają te same elementy i / lub atrybuty), a gdzie nie ma konfliktu, oba kopiują do wyniku końcowego.
Próbowałem wyszukać, ale nie mogę znaleźć niczego, być może dlatego, że słowa, których używam do wyszukiwania, są zbyt ogólne. Jakieś przemyślenia lub rozwiązania (szczególnie dla Linq)?