1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

JDom Object vergleich / compare XML

  • pim
  • 31. Mai 2005 um 21:48
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • pim
    Punkte
    145
    Beiträge
    20
    • 31. Mai 2005 um 21:48
    • #1

    hallo, ich habe zwei probleme

    1.: ich will JDom objecte vergleichen, diese beinhalten xml elemente (siehe code fragment), ich habe nun das problem, dass die elemente, in meinen zu vergleichenden Objecten, nicht in einer bestimmten reihenfolge auftreten, daher auch nicht als gleich erkannt werden, obwohl sie eigentlich gleichen inhalt haben.

    2.: auch bei lösung des ersten problems stehe ich immer noch vor einem problem wenn "theoretisch" ein anderer namespace im element angegeben ist.

    Code
    <attributes xsi:type="dt:Attribute">
       <name>abc</name>
       <value>http://www...</value>
    </attributes>
    <attributes xsi:type="dt:Attribute">
       <name>xyz</name>
       <value>54321</value>
    </attributes>
  • Flowyes
    Punkte
    750
    Beiträge
    116
    • 1. Juni 2005 um 10:55
    • #2

    Ich verstehe vielleicht das Problem nicht ganz. Was meinst du mit gleichem Inhalt? Was müsste in dem von dir angegebenen Code gleich sein wird aber nicht als gleich erkannt?

  • pim
    Punkte
    145
    Beiträge
    20
    • 1. Juni 2005 um 11:39
    • #3

    erstes Object beinhaltet:

    Code
    <attributes xsi:type="dt:Attribute">
       <name>abc</name>
       <value>http://www...</value>
    </attributes>
    <attributes xsi:type="dt:Attribute">
       <name>xyz</name>
       <value>54321</value>
    </attributes>

    zweites Object beinhaltet:

    Code
    <attributes xsi:type="dt:Attribute">
       <name>xyz</name>
       <value>54321</value>
    </attributes>
    <attributes xsi:type="dt:Attribute">
       <name>abc</name>
       <value>http://www...</value>
    </attributes>

    ich brauche eine möglichkeit diese beiden JDom Objects zu vergleichen (nur auf inhaltsgleichheit, nicht die unterschiede herausfiltern usw.), die reihenfolge der element hat für mich keine relevanz, bin nicht auf JDom festgelegt.

  • Flowyes
    Punkte
    750
    Beiträge
    116
    • 1. Juni 2005 um 12:17
    • #4

    Ein Vorschlag wäre folgender:

    Code
    boolean gleich = false;
    
    
    schreibe alle <name>-Elemente von Object 1 in ein Array a1;
    schreibe alle <name>-Elemente von Object 2 auch in ein Array a2;
    if (|a1| == |a2|) {
      for (i=0; i<|a1|; i++) {
    	gleich = false;
    	for (j=0; j<|a2|; j++) {
    	  if (a1[i] == a2[j]) {
    		gleich = true;
    		break;
    	   }
    	 if (gleich) continue;
    	  else break;
         }
    }
    Alles anzeigen


    Wenn dieser Code beendet ist, gibt die Variable "gleich" an, ob die name-Elemente gleich sind oder nicht. Das selbe kannst du dann auch für value machen, und wenn beide "gleich" sind dann sind beide Objekte gleich. Ist zwar pseudocodig was ich da hab, aber vielleicht hilfts.

  • a9bejo
    Punkte
    4.697
    Beiträge
    913
    • 2. Juni 2005 um 08:44
    • #5
    Zitat von pim


    ich brauche eine möglichkeit diese beiden JDom Objects zu vergleichen (nur auf inhaltsgleichheit, nicht die unterschiede herausfiltern usw.), die reihenfolge der element hat für mich keine relevanz, bin nicht auf JDom festgelegt.

    wow, überraschend kompliziert diese aufgabe. Man könnte doch meinen, dass zwei xml documente öfters verglichen werden müssten, und das bibliotheken wie jdom dafür funktionalität bereitstellen.

    wie auch immer, hier habe ich ein xslt stylesheet gefunden, das den job übernimmt. nicht getestet, aber damit lässt sich sicher etwas anfangen.

  • pim
    Punkte
    145
    Beiträge
    20
    • 2. Juni 2005 um 20:18
    • #6

    dank euch für eure vorschläge, ich hab halt irgendwie das problem, dass ich jedes neue object dann mit allen vorhandenen vergleichen muss.

    ich bräuchte irgendwie eine lösung die in die richtung eines "intelligenten" hash werts geht, nur für neues object was berechnen und dann mit den bereits vorhandenen werten vergleichen.

  • pim
    Punkte
    145
    Beiträge
    20
    • 4. Juni 2005 um 14:17
    • #7

    ich hätte jetzt einen neuen ansatz für mein problem und hoffe, dass mir wer von euch helfen kann,

    ich würde meinen vergleich gerne mit xpath realisieren, die idee:

    macht es sinn sich für jeden Knoten im Dom Object den xpath zu merken, und diese liste von xpath ausdrücken dann gegen das zweite Dom Object abzufragen?

  • xmlcmp
    Punkte
    5
    Beiträge
    1
    • 28. Januar 2006 um 17:52
    • #8

    Mit dem Produkt <xml>cmp kann man inbesondere große Xml-Dateien sehr effizient vergleichen (http://www.xmlcmp.de). Über eine Xml-Konfigurationsdatei kann man sehr detailliert definieren, welche Elemente/Attribute verglichen werden sollen, ob die Element-Reihenfolge relevant ist oder nicht, ob Konvertierungen vor dem Vergleich durchgeführt werden sollen etc.

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum