zwei XML Fragmente mergen
Frank (no reg)
- programmiertechnik
Hi,
ich hoffe, dass so kurz vor dem Wochenende doch noch jemand da ist,
der mir hier einen Anschubser geben könnte?!?
Ich habe zwei XML Fragmente (bewusst! Fragmente), die ich gern
gegeneinanderlaufenlassen möchte:
(1)
<formatclass>
<foregroundcolor colorspace="rgb">#000000</foregroundcolor>
<backgroundcolor colorspace="rgb">#AFAFAF</foregroundcolor>
<font>
<fontfamily>Arial</fontfamily>
<fontsize unit="px">24</fontsize>
<fontstyles>
<bold enabled="true" />
<italic enabled="false" />
<strikethrough enabled="false" />
<underline enabled="true" />
</fontstyles>
</font>
</formatclass>
(2)
<formatclass>
<foregroundcolor colorspace="rgb">#000088</foregroundcolor>
<font>
<fontfamily>Arial</fontfamily>
<fontsize unit="px">24</fontsize>
<fontstyles>
<bold enabled="false" />
<italic enabled="false" />
<strikethrough enabled="false" />
</fontstyles>
</font>
</formatclass>
herauskommen soll:
<formatclass>
<foregroundcolor colorspace="rgb">#000088</foregroundcolor>
<backgroundcolor colorspace="rgb">#AFAFAF</foregroundcolor>
<font>
<fontfamily>Arial</fontfamily>
<fontsize unit="px">24</fontsize>
<fontstyles>
<bold enabled="false" />
<italic enabled="false" />
<strikethrough enabled="false" />
<underline enabled="true" />
</fontstyles>
</font>
</formatclass>
Ich komme irgendwie nicht auf einen grünen Zweig.
Mein momentaner Ansatz besteht darin, ein XPathDocument (.Net, MS XML, C#)
für jeweils das bestehende und das neue Fragment zu erzeugen und
zuerst alle Elemente zu erzeugen, die im bestehenden Fragment vorhanden
sind, jedoch im neuen nicht und dann in einem zweiten Durchgang alle
Nodes aus dem neuen Fragment hinzuzuschreiben (mittels XmlTextWriter).
Wären alle Nodes auf einem Level, würde es funktionieren, jedoch hat
aber <font>...</font> noch weitere Levels. <font>...</font> ist in
beiden Fragmenten drin, jedoch komme ich beim o.g. 2. Durchgang dann
bei <underline enabled="true" /> an, welches ich nicht mehr in den
Ausgabestream schreiben kann, weil dort bereits bei Durchgang 1 die
EndTags </fontstyles> und </font> geschrieben sind.
Hat jemand vorschläge, wie ich meinen "Ansatz" ändern oder verbessern
könnte?
Danke schonmal im Voraus!! :-)
Ciao, Frank
Hi,
Hat jemand vorschläge, wie ich meinen "Ansatz" ändern oder verbessern
könnte?
hast Du schon mal daran gedacht, beide Strukturen in einen DOM-Tree umzuwandeln und den einen durch den anderen rekursiv zu überschreiben?
Cheatah
Hi Cheatah,
danke für den Tip ... Rekursion war das Stichwort :-)
Hab es jetzt erfolgreich hinbekommen.
Ciao, Frank