Ankündigung

Einklappen
Keine Ankündigung bisher.

Zwei XML vergleichen und dass true setzen funkioniert nicht

Einklappen

Neue Werbung 2019

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

  • Zwei XML vergleichen und dass true setzen funkioniert nicht

    Ich möchte aus einer XMl Datei zwei Werte auslesen diesen mit bestimmten Werten im Script vergleichen und wenn beide Werte über einstimmen einer Variable ein true übergeben.

    Dieses True übergeben funktioniert nicht bzw. der Script läft dann nicht komplett durch.

    PHP-Code:
    foreach($verz as $XML)
    {
    if(
    $XML === '.' || $XML === '..') {continue;}txtfile1($XML);
    $id3000 xmlreader($XML"3000");
    .
    .

    PHP-Code:

    function xmlreader($pfad,$number)
    {

    $pfad "rohdaten/xml/".$pfad;txtfile2($pfad);
    $return false;
    $xml simplexml_load_file($pfad);

    foreach (
    $xml->Table->Record->Table[3]->Record as $record)
    {

        foreach(
    $record->Field as $reihe)
        {
            if (
    $reihe->attributes()->name == "Platzierung")
            {
                
    $xmlid $reihe->attributes()->value;
            }
            if (
    $reihe->attributes()->name == "Objekt")
            {
                
    $xmlobjekt$reihe->attributes()->value;
                
    //&&  $xmlobjekt == "0420"
            
    }
            if (
    $xmlid == $number &&  $xmlobjekt == "0420"){
            
    $return true;  // wenn dass hier aktiviert ist funktioniert es nicht korrekt.
            
    }
        }
    }
    return (
    $return);



  • #2
    === Operator
    PHP-Klassen auf github

    Kommentar


    • #3
      Hallo Zusammen,

      Habe ebenfalls ein Problem mit dem Vergleichen zweier XML-Werten...

      Ich habe zwei XML-Dateien, bei denen ich die Timestamps vergleiche, jedoch funzt das nicht so ganz, ich bekomme einfach kein true, nehme ich nur einen Timestamp, den ich mit einer "manuelen Zahl" vergleiche, so funzts.
      Das geht mit beiden Timestamps, daher kann ich Tippfehler ect. ausschließen.

      Bitte um Hilfe!

      Gruß,
      PascalS

      Kommentar


      • #4
        Sinnvoll wäre an dieser Stelle der Code, mit dem es nicht funktioniert, denn wenn beide Timestamps manuell verglichen werden können, machst Du in Deinem Script was falsch...
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar


        • #5
          Bitte ein lauffähiges Testbeispiel posten und nicht nur Code-Ausschnitte.

          Kommentar


          • #6
            Hallo Zusammen,

            Danke für eure schnelle Antwort!

            Habe den PHP-Code unten in eine txt-Datei anhängen müssen, da es am Tablet nicht anders geht, sollte aber trotzdem alles ersichtlich sein...

            Verwende außerdem PHP 7.

            Gruß,
            PascalS
            Angehängte Dateien

            Kommentar


            • #7
              es wäre jetzt natürlich noch schön zu wissen, ob die beiden Timestamps auch etwas sind, das PHP mit "Größer als" vergleichen kann ...

              aber der Fehler liegt wohl schon darin, dass du für beide XML-Dateien jeweils die gleiche Variable benutzt ... $xmlr ... wie wäre es mit 2'en davon ?
              "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

              Kommentar


              • #8
                Zitat von PascalS Beitrag anzeigen
                Habe den PHP-Code unten in eine txt-Datei anhängen müssen, da es am Tablet nicht anders geht, sollte aber trotzdem alles ersichtlich sein...
                Und die XML-Daten?

                Kommentar


                • #9
                  Hallo eagle275,

                  Es handelt sich bei den Timestamps um UNIX Timestamps (z.B. 1471127785), die von PHP vergleichbar sind.

                  Das mit $xmlr2 habe ich leider vergebenslos auch schon versucht...
                  Gerade nochmal

                  Gruß,
                  PascalS

                  Kommentar


                  • #10
                    Hallo hellbringer,

                    Hier die XML's...
                    Ist einmal unter "xml1.xml" und unter "xml2.xml" gespeichert.

                    Einfach UNIX Timestamp von "xml1.xml" höher setzten

                    Gruß,
                    PascalS
                    Angehängte Dateien

                    Kommentar


                    • #11
                      Wenn du nicht die beiden XML-Daten wie von Hellbringer schon angefragt, zeigst, kann dir keiner sagen was du falsch machst.
                      Testbares Beispiel bedeutet, dass man nachvollziehen kann was bei dir nicht läuft, das ist derzeit aber nicht möglich.

                      Kommentar


                      • #12
                        Du vergleichst zwei Nodes. Du müsstest die Werte davon vergleichen. Die erhältst du z.B. durch casten:

                        PHP-Code:
                        $timestamp1 = (int) $xmlr->daten->stamp
                        http://php.net/manual/de/language.ty...es.typecasting

                        Kommentar


                        • #13
                          so .. Problem erkannt ...

                          ich geb dir nen Tipp :

                          mach mal in deiner PHP ein

                          PHP-Code:
                          var_dump($timestamp1); 
                          nachdem du $timestamp1 zugewiesen hast ...

                          das sind nämlich keinesfalls direkt die Zahlen, sondern SIMPLEXML_ELEMENTS ... die sind wiederum Objekte und können NICHT mit "größer als" behandelt werden ...

                          da wirst du die Zahl erst extrahieren müssen .. .toString() -> und dann parseInt() wäre ne Möglichkeit

                          hellbringer war schneller ^^
                          "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

                          Kommentar


                          • #14
                            Hallo hellbringer/eagle275,

                            Perfekt, jetzt funzts!

                            Danke an euch ^^

                            Gruß,
                            PascalS

                            Kommentar


                            • #15
                              Zitat von eagle275 Beitrag anzeigen
                              das sind nämlich keinesfalls direkt die Zahlen, sondern SIMPLEXML_ELEMENTS
                              SimpleXmlElement heist die Klasse…

                              Zitat von eagle275 Beitrag anzeigen
                              ... die sind wiederum Objekte und können NICHT mit "größer als" behandelt werden ...
                              Die Aussage ist so nicht korrekt. Klar können Objekte mit größer/kleiner verglichen werden wenn diese bestimmte Voraussetzungen erfüllen.
                              Siehe DateTime Klasse. Wir als Programmierer habe da zwar leider keinen Einfluß aber dennoch gibt es solche Objekte!

                              Zitat von eagle275 Beitrag anzeigen
                              da wirst du die Zahl erst extrahieren müssen .. .toString() -> und dann parseInt() wäre ne Möglichkeit
                              JavaScript wird Ihm sicher nicht weiterhelfen
                              PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

                              Kommentar

                              Lädt...
                              X