PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : diff/patch des Subbaums auf gesamtBaum


Oc86
30.11.2010, 11:57
Hallo @all,

ich stehen vor dem folgenden Problem:
Ich habe hier einen große XML datei(20MB). Der Baum hat in etwa 20000 Blätter.
Weil ich nicht am ganzen Baum änderungen vornehmen werden, extrahiere ich von dieser Datei eine Subbaum, indem ich einen großen Teil der Blätter des Baumes beim extrahieren lösche. An dieser kleineren XML datei mache ich einige Änderungen und lasse mir eine diff ausgeben. Und hier fängt mein Problem an: Alle diff-Anwendungen die ich bis jetzt benutzt hatte , geben mir in der diff, xpath Ausdrücke aus, die sich auf den kleinen Baum beziehen. Wie z.b. xpath = /..../Chid[250] : Holen die Referenz zum 250. Kindsknoten. Diese diff kann ich aber nicht auf die Große Datei anwenden, weil der 250. Kindsknoten ein Knoten sein kann(in der große XML-Datei), denn ich vorher nicht extrahiert hatte.(die Reihenfolge hat sich ja geändert).
Was ich gerne haben würde , wäre, dass er mir den XPath Ausdrück bzgl. eines attributes geben würde(=> für die Blätte). Bei mir wäre es das Attribute 'id' . Der ist bei mir eindeutig und wird als uuid generiert.

Kennt jemand die Lösung meines Problems ??

Zusammenfassung :

1.) großexml.xml -----> file1.xml (extrahiertes Subbaum)

2.) file1.xml + file2.xml(geändertes file1.xml) ----> diff.xml (XUpdate datei oder ähnliches)

3.) patch der großexml.xml mit diff.xml


Ich hoffe, ich konnte mein Problem erständlich erläutern http://entwickler-forum.de/images/smilies/rolleyes.gif


Grüße
Oc86


Firefall
30.11.2010, 20:05
Was sind das für Änderungen, die du da machst? Sind strukturelle Änderungen dabei? Oder änderst du bloss Attribute der Knoten?

Oc86
01.12.2010, 08:52
Es sollen schon auch Blätter hinzugefügt und gelöscht werden können. Kurz gesagt: Insert, Delete und Update wie in "normalen Diff" sollen möglich sein !

die Struktur der drei Bäume ist ja gleich, nur das file1.xml und file2.xml weniger Blätter hat als die große xml !