Ankündigung

Einklappen
Keine Ankündigung bisher.

Prüfen, ob XML-File valide ist

Einklappen

Neue Werbung 2019

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

  • Prüfen, ob XML-File valide ist

    Hi,

    ich hole mir von einen Hersteller in regelmässigen Abständen ein XML File und speichere mir das weg zur späteren Bearbeitung.

    Problem ist nur => der Hersteller selbst hat noch Probelme mit der Erstellung der XML Datei-
    Meist bekomme ich eine korrekte XML Datei zurück. Manchmal aber nur eine XML wo Fehler drin ist. (Entwerder leere Datei, oder nur zum teil gefüllt... oder ne 404 Fehlermeldung)

    Nun gibt es offensichtlich einen netten Befehl zum Prüfen, ob eine XML-Datei valide ist

    http://www.php.net/manual/de/xmlreader.isvalid.php

    Hab ich auch so verwendet:
    PHP-Code:
    $cachefolder '/var/www/xml_daten/';
    $qacacheName $cachefolder.$qacacheName[1].'.xml';

        
    $xml = new XMLReader();
        
    $xml XMLReader::open($qacacheName );

    // VALIDATE Option muss gesetzt werden
    $xml->setParserProperty(XMLReader::VALIDATEtrue);

    var_dump($xml->isValid());
    echo 
    '<br>'
    Zurück bekomm ich:
    Strict Standards: Non-static method XMLReader:pen() should not be called statically in /var/www/xml_data.php on line 42
    bool(true)
    true stimmt nicht. Die XML Struktur ist nicht vorhanden oder fehlerhaft-.... und es gibt dennoch ein true zurück.

    Wie könnte ich mein Problem lösen ?

  • #2
    falsch
    PHP-Code:
        $xml = new XMLReader(); 
        
    $xml XMLReader::open($qacacheName ); 
    richtig
    PHP-Code:
        $xml = new XMLReader(); 
        
    $xml $xml->open($qacacheName ); 
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      sicher(?)... dann hätte php.net ja ne falsche Doku.

      Geändert hab ich es mal nach deinen Angaben.
      Nun hängt aber das ganze Script
      Code:
      Fatal error: Call to a member function setParserProperty() on a non-object in /var/www/xml_data.php on line 45
      
      Line: 45 wäre dann:
      $xml->setParserProperty(XMLReader::VALIDATE, true);

      Kommentar


      • #4
        Jop, weil ich auch erst anschliessend in die Doku geguckt habe:

        PHP-Code:
        public bool XMLReader::open string $URI [, string $encoding [, int $options ]] ) 
        Die Methode liefert "bool" - das darf man natürlich nicht auf $xml zuweisen...
        PHP-Code:
        $xml = new XMLReader(); 
        $success $xml->open($qacacheName ); 
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Zitat von lstegelitz Beitrag anzeigen
          Die Methode liefert "bool" - das darf man natürlich nicht auf $xml zuweisen...
          Nehm ich mal so hin, obwohl die Doku auch hier was anderes sagt.
          Hab's geändert = keine Änderung.

          Selbst eine 0B (also leer) große Datei liefert:
          Code:
          bool(true)
          Sehr komisch, dass hier die Doku dermaßen fehlerhaft ist

          Edit:
          Dachte erst, dass mein Server vvlt. noch ne Erweiterung braucht.
          Aber:
          http://runnable.com/UmmfFlLPO1cxAAAW...reader-and-php
          Selbst wenn ich die XML Datei leere und online ausführe, ist diese "valid".
          Zerstöre ich die XML-Datei absichtlich, ist diese immer noch valide.

          Ist das überhaupt ne offizielle PHP-funktion (?)
          Kann ich anders auf gültigkeit prüfen ?

          Kommentar


          • #6
            Wie kommst du darauf, das die Doku fehlerhaft ist?
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar

            Lädt...
            X