Announcement

Collapse
No announcement yet.

XML sortieren

Collapse
This topic is closed.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XML sortieren

    Hallo,

    ich füge über ein Formular Einträge in einer XML Datei hinzu. Jetzt hätte ich gerne, dass diese Einträge immer wenn ein neuer hinzukommt, sortiert werden.

    Hab das ganze so probiert:
    PHP Code:
    function compDate($a$b) {
        
    $dats1 strtotime($a->datum);
        
    $dats2 strtotime($b->datum);

        return (
    $dats1 $dats2);
      }

    ...

    //Nach Datum sortieren
          
    $termine = (array) $doc->termin;
          
    usort($termine'compDate');

    ...

    if (
    $doc->asXML('termine.xml'))    // XML Struktur in Dateien speichern
          
    {                          
            echo 
    "Termin gespeichert!";
          }
          else
          {
            echo 
    "Fehler beim speichern!";
          } 
    Die XML Struktur sieht z.B. so aus:
    Code:
    <termine>
      <termin typ="probe">
        <datum>15.11.2010</datum>
        <uhrzeit>19.30</uhrzeit>
        <ort>Musikerheim</ort>
        <anmerkung />
      </termin>
    </termine>
    Funktioniert allerdings nicht. Fehlermeldung gibts keine. Die Einträge werden hinzugefügt aber nicht sortiert. Habe auch versucht ein paar Debug-Ausgaben einzubauen aber das funktioniert auch nicht, anscheinend mach ich da auch irgendwas falsch, z.b. hatte ich in der compDate funktion
    PHP Code:
    echo "a: ", (string) $a->datum"\n"
    stehen, aber da kam nur "a: " bei raus...

    Wie mach ich das, so dass das richtig sortiert wird?

  • #2
    Liegt es vielleicht daran, dass ich hier
    PHP Code:
    //Nach Datum sortieren 
          
    $termine = (array) $doc->termin
          
    usort($termine'compDate'); 
    ein neues Array erstelle und dieses sortiere anstatt der eigentlichen termine $doc->termin ?


    edit: ok, habe mittlerweile rausgefunden, dass meine Sortierfunktion auf jeden Fall funktioniert. Man muss aber $doc->xpath('//termin') schreiben, statt $doc->termin, keine Ahnung warum. Es wird anscheinend wirklich nur das neue array sortiert und nicht die simplexml werte.

    Allerdings funktioniert auch
    PHP Code:
    usort($doc->xpath('//termin'), 'compDate'); 
    nicht...
    Zuletzt editiert von hergipotter; 15.12.2010, 12:26.

    Comment


    • #3
      Hallo,

      Warum muss eine XML-Datei sortiert sein? Eine bestimmte Sortierung entsteht doch erst bei der Ausgabe!?

      Gruß Falk
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        Crossposting => Close!
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment

        Working...
        X