Ankündigung

Einklappen
Keine Ankündigung bisher.

in einer XML Datei den Vorgänger und den Nachfolger des aktuellen Datums finden?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • in einer XML Datei den Vorgänger und den Nachfolger des aktuellen Datums finden?

    Hallo zusammen,

    ich bin auf der Suche nach einer Möglichkeit, eine xml Datei einzulesen und nach dem Attribut Datum zu suchen und zm aktuellen Datum den Vrgänger und Nachfolger zu finden und die beiden Daten jeweils in eie Variable zu speichern.
    Die xml sieht so aus:
    <match>
    <date>21.09.2014</date>
    <time>16:00</time>
    <team>
    <name>
    </team>
    </match>
    <match>
    <date>28.09.2014</date>
    <time>16:00</time>
    </match>
    Folgende IDee hate ich dabei:
    $_date = date('Y-m-d');
    foreach($_matches->match as $match){
    for i=0; $_datum[i] = $match->date; i++
    }
    for i=0; $_vorgaenger = $_datum[i]; i++
    $_nachfolger = $_datum[i];
    if $_vorgaenger <= $_date AND $_nachfolger >= $_date
    ...meine Anweisungen... mit parent and cild Anweisungen aus xml heraus
    So wollte ich es ungefähr machen, komme aber mangesl KnowHo einfach nicht weiter

    Für Hinweise bin icc dankbar.
    Ich bin zum Einen nicht sicher, ob ich die xml so zerlegen kann und ob das mit der for-Schleife so korrekt ist. Zumindest funktioniert es so nicht.

    Grüße und Danke

  • #2
    DOM und XPath Query
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Edith: lstegelitz war schneller

      Die XML ist kaputt. Wenn sie heil wäre, dann würdest du das normal mit XPath machen:

      Du suchst nach http://php.net/manual/de/class.domxpath.php

      PHP-Code:
      $doc = new DOMDocument();
      $doc->loadXML($xml);
      $xp = new DOMXPath($doc);
      echo 
      $xp->evaluate('string(/root/match[1]/date/text())'); 
      https://eval.in/233505

      Kommentar


      • #4
        http://php.net/manual/de/domxpath.evaluate.php

        Kommentar


        • #5
          Das ist nur ein Fragment, wenn das deine ganze XML ist musst du das mit DOMDocument als DocumentFragment einlesen. XMLs müssen mit einer Processing Instruction beginnen die festlegt das es ein XML-Dokument ist, nebst Version-Property. Eine XML darf außerdem nur ein Root-Element besitzen.

          Einleitende Processing Instruction einer gewöhnlichen XML:
          Code:
          <?xml version="1.0" charset="utf-8" ?>
          [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

          Kommentar


          • #6
            Hallo alle zusammen,

            das ist nicht die komplette xml-Datei. Ich habe nur den mir wichtig erscheinenden Teil reingeschrieben um aufzuzeigen, dass eine Struktur wie sie exemplarisch dargestellt ist, mehrfach auftaucht.

            Passt sonst der Code soweit? Ich komme leider noch nicht weiter, werde aber jetzt Eure Hinweise lesen. Die XML lade ich mit "simplexml_load_file()

            Mir geht es mehr um die for Schleife und den Aufbau dazu, da ich noch keinen hilfreichen Hinweis gefunden habe, um das Datum aus der xml zuspeichern und wieder zu verwenden zum Vergleich.

            Grüße
            SHe

            Kommentar


            • #7
              Hallo,

              das Kernproblem ist, dass es ein bescheidenes xml ist, was ich bekomme. in dem Fall gibt es nur "match" und nicht "match[1] bis match[n]. Damit wird das echt schierig auszuwerten.
              Habe gerade das hier:
              $_matches = simplexml_load_file($xml);
              $_anzahlSpieltag = count($_matches->match);
              echo "$_anzahlSpieltag\n";
              for($i = 0; $i < $_anzahlSpieltag; $i++){
              $_spieltag = $_matches->match->date;
              echo "$_spieltag\n";
              }
              Dabei sehe ich als Ergebnis, dass er immer nur das erste Datum bekommt

              Kommentar


              • #8
                Beitrag #3?

                Kommentar


                • #9
                  Hallo zusammen,

                  da ich leider überhaupt nicht zurecht komme mit euren Antworten, verscuhe ich die Frage anders zu stellen. Meine xml ist bescheiden aufgebaut.
                  Sie hat auf der "root" gefühlte Attribute mit identischem Namen: "match" Darunter gibt es bei jedem "match" unter anderem ein Attibut "date", also match->date

                  <?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>
                  <match>
                  <id>123456</id>
                  <number>6000</number>
                  <date>21.09.2014</date>
                  <time>16:00</time>
                  <host>
                  <id>7890</id>
                  <name>NAME</name>
                  <club>CLUB</club>
                  </host>
                  </match>

                  Mein Ziel ist es das xml mit einer Schleife zu druchlaufen (foreach beispielsweise) und alle match->date Werte in eine Variable zu speichern.
                  Ungefähr so:
                  $Datum1 = match->date (vom ersten durchlauf)
                  $Datum2 = match->date (vom zweiten durchlauf)

                  Und dann danach mit if zu arbeiten, um mir dann aus der Struktur andere Werte zu holen
                  IF $Datum1 < date('Y-m-d') UND $Datum2 < date('Y-m-d'){
                  $id = $xml->match->id;
                  ...
                  }

                  Ich bin auf der Suche nach dem letzten Datumseintrag in Bezug auf das aktuelle Datum. Den Vergleich bekomme ich hin, aber das Speicher des Datum Atributes aus der Struktur nicht Bin einfach zu blöd... und kapier es einfach nicht. Mit den DOM Hinweisen bekomme ich immer nur genau einen hin.

                  Grüße und Danke und weiterhin eine schöne Weihnachtszeit.

                  Kommentar


                  • #10
                    https://gist.github.com/Golpha/bdd4a46647a2a4cb6504
                    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                    Kommentar


                    • #11
                      Hallo zusammen,
                      ich habe es trotz aller Hinweise nicht hinbekommen Daher habe ich mich entschieden, die xml in die DB zu schreiben und dort weiter zu verarbeiten. Danke an alle, die verscuht haben mir zu helfen.

                      May your Christmas be wrapped in joy and your New Year filled with hope!

                      Danke

                      Kommentar

                      Lädt...
                      X