Joerg: Vergleich zweier xml-Dateien

Hallo,

ich erhalte aus regelmäßigen Messungen die aktualisierte Fassung einer xml-Datei. Wenn ich die aktualisierte Fassung erhalte, möchte ich die Unterschiede zur Vorversion möglichst effizient herausarbeiten. Die xml-Dateien enthalten jeweils ca. 1000 Einträge.

Es können sich Werte ändern und es können neue Nodes hinzukommen. Es werden keine Nodes gelöscht. Die Nodes enthalten ausschließlich Attribute.

Beispiel:

// Vorhandenes Mess-Ergebnis:

  
<ports>  
<port id="1" data="123"/>  
<port id="2" data="214"/>  
<port id="4" data="542"/>  
<port id="8" data="200"/>  
</ports>  

// Neues Mess-Ergebnis:

  
<ports>  
<port id="1" data="123"/>  
<port id="2" data="215"/>  <!-- geänderter Wert -->  
<port id="3" data="120"/>  <!--  neuer Node -->  
<port id="4" data="542"/>  
<port id="8" data="200"/>  
</ports>  

// gewünschter Output:

  
<ports>  
<port id="2" data="215"/>  <!-- geänderter Wert -->  
<port id="3" data="120"/>  <!--  neuer Node -->  
</ports>  

Kann mir jemand einen Tipp geben, wie ich es am Besten anfange? Es läuft ein Apache mit PHP.

Danke für eure Antworten,
Joerg

  1. Moin,

    Kann mir jemand einen Tipp geben, wie ich es am Besten anfange? Es läuft ein Apache mit PHP.

    Schreib dir ein PHP-Skript, was deine Anforderungen erfüllt. Es gibt verschiedene Wege für die man verschiedene Hilfsmittel verwenden kann. Einige Stichpunkte:

    Grüße Marco

    --
    Ich spreche Spaghetticode - fließend.
  2. Meine Herren,

    und wie soll die Ausgabe für gelöschte Knoten lauten?
    Ich würde wahrscheinlich mit diff den Anfang machen, das setzt natürlich einige erfüllte Bedingungen voraus, anschließend die Ausgbabe von diff mit PHP deinen Wünschen entsprechend weiterverarbeiten.

    Sollte diff keine Option sein, hat misterunknown einige gute Vorschläge gemacht, die so unterschreiben würde.

    --
    Hey Girl,
    i wish you were asynchronous, so you'd give me a callback.
    1. Om nah hoo pez nyeetz, 1UnitedPower!

      und wie soll die Ausgabe für gelöschte Knoten lauten?

      OP: "Es werden keine Nodes gelöscht."

      Matthias

      --
      Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Ei und Eichel.