1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

JDom Object vergleich / compare XML

  • pim
  • 31. Mai 2005 um 21:48
  • Unerledigt
  • pim
    4
    pim
    Mitglied
    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
    9
    Flowyes
    Mitglied
    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?

    The idea behind this technique is surprisingly simple: just go ahead and do whatever you want to without paying attention to what anybody else is doing. If there is a problem, worry about it later. (Many politicians use this algorithm, too) -- A. S. Tanenbaum, M. v. Steen, Distributed Systems

  • pim
    4
    pim
    Mitglied
    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
    9
    Flowyes
    Mitglied
    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.

    The idea behind this technique is surprisingly simple: just go ahead and do whatever you want to without paying attention to what anybody else is doing. If there is a problem, worry about it later. (Many politicians use this algorithm, too) -- A. S. Tanenbaum, M. v. Steen, Distributed Systems

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    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.

    lg, Benjamin Ferrari, bookworm.at

  • pim
    4
    pim
    Mitglied
    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
    4
    pim
    Mitglied
    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
    1
    xmlcmp
    Mitglied
    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.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern