Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP 5.4 XML / NITF dpa News

Einklappen

Neue Werbung 2019

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

  • PHP 5.4 XML / NITF dpa News

    Hallo zusammen,

    ich verzweifel hier schon so langsam.
    Ich bekomme von der dpa Nachrichten im NITF Format (eigentlich ist ex eine XML nur sehr viel komplexer). Naja wie auch immer. Bei PEAR gibt es einen NITF Parser der die XML_Parser extended.

    Leider wirft das Ding NUR Fehler
    Ich bekomm es einfach nicht hin...
    Ich hab die halbe Nacht und den ganzen gestrigen Tag damit verbracht...
    Bin mit meinem Latein echt am Ende

    Ich hoffe hier kann mir einer helfen.
    Ob es evtl. andere XML/NITF Parser gibt?
    Schon jemand Erfahrung?
    Oder gibt's da einfach einen Trick?



    Declaration of XML_Parser::raiseError() should be compatible with & PEAR::raiseError($message = NULL, $code = NULL, $mode = NULL, $options = NULL, $userinfo = NULL, $error_class = NULL, $skipmsg = false) in /usr/share/php/XML/Parser.php on line 117
    Gab es auf der PEAR Seite einen Patch für, den habe ich eingebaut, dank webmin komm ich an die Dateien heran.

    Aber nun treten neue Fehler auf...

    Strict Standards: Declaration of XML_NITF::StartHandler() should be compatible with XML_Parser::startHandler($xp, $elem, &$attribs) in /www/xxx/web/nitf.php on line 70
    Es ist immer was Neues.

    Wie auch immer, so viele Spielerein, wie etwa das patchen, wird auf dem späteren ALLINKL Server denke ich eh nicht machbar sein?!

    Wir verwenden zur Zeit PHP 5.4

    PEAR XML_Parser2 ist ebenfalls installiert
    Und mit folgender Datei sollte die NITF Datei eigentlich zu parsen sein:
    http://pear.php.net/package/XML_NITF/redirected

  • #2
    Der einfachste "Trick" ist es, diese Fehler zu beheben.
    [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

    Kommentar


    • #3
      Wie ich diese Antworten liebe. Wir wäre es mit etwas konstruktiverem? Für jemanden mit dem Status "Erfahrener Benutzer" ist diese Antwort ziemlich unerfahren.

      Kommentar


      • #4
        Was willst du hören? Mit PHP 5.3 werden diese Fehler vermutlich nicht mehr auftreten, da dort der Strict-Standard nicht zu durchgezogen wurde.

        Eventuell hilft es bereits sehr weit, wenn du E_STRICT im Error-Reporting ausschaltest (~!E_STRICT).

        Und was du mit dem "späteren Allinkl"-Server meinst, weiss ich nicht. Ich kann auf meine Server überall und von überall zugreifen, kann patchen und mich austoben wie ich will. Dafür gibt es ja schliesslich SSH/SFTP.

        Wieso du speziell einen NITF-Parser benötigst, wenn es doch auch nur XML ist (so wie du sagst), ist mir noch nicht ganz klar. Für PHP gibt es den hauseigenen SimpleXMLParser, damit kommt man oft sehr weit. Ansonsten hilft eventuell DOM weiter.
        [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

        Kommentar


        • #5
          Es erstmal mit SimpleXML und XPath zu probieren war auch mein erster Gedanke. Wenn es nur darum geht, bestmmte Informationen aus der XML zu holen, waren die Hausmittel bisher immer ausreichend. Viel mehr kann ich (k.A. welche Tücken NITF hat) bei der sehr allgemeinen Problembeschreibung nicht dazu sagen.

          Kommentar


          • #6
            Es handelt sich wie oben beschrieben um NITF Dokumente die ich für nicht so erfahrene Benutzer als komplexere XML Dateien beschrieben habe! Mit SimpleXML und Co. kann man natürlich arbeiten, müsste sich aber quasi damit einen eigenen Parser schreiben! Aber nach fast 17 Stunden tüfteln... ist es geschafft. Für all die es interessiert, müssen die Funktionen "startHandler($xp, $elem, &$attribs)" und "endHandler($xp, $elem)" aus der /usr/share/XML/Parser.php entfernt werden wenn mit PHP 5.x gearbeitet wird und NITF verwendet werden soll. Die beiden Funktionen scheinen mir eh Leichen zu sein denn sie haben nur eine Zeile "return null"

            Kommentar


            • #7
              Zitat von g.dola Beitrag anzeigen
              Es handelt sich wie oben beschrieben um NITF Dokumente die ich für nicht so erfahrene Benutzer als komplexere XML Dateien beschrieben habe! Mit SimpleXML und Co. kann man natürlich arbeiten, müsste sich aber quasi damit einen eigenen Parser schreiben!
              Das ist doch Quatsch. Entweder es ist XML oder eben nicht. Sowas wie "komplexeres" XML gibt es nicht.

              Zu deiner oben beschreibenen Fehlermeldung: Die ist so aussagekräftig dass du sie als Fortgeschrittener verstehen solltest...
              [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

              Kommentar


              • #8
                Nein es ist NITF. Und es wird im Web wenn man mal googelt und sein Hirn benutzt als komplexeres XML beschrieben. Naja euch Erbsenzählern und blöde Forenbeiträge-Verfassern noch einen schönen Tag

                Kommentar


                • #9
                  Zitat von g.dola Beitrag anzeigen
                  Wie ich diese Antworten liebe. Wir wäre es mit etwas konstruktiverem? Für jemanden mit dem Status "Erfahrener Benutzer" ist diese Antwort ziemlich unerfahren.
                  als forgeschrtitterner soltest du die meldungen verstehen, in der lage sein brauchbaren code dazu zu posten und schliesslich auch das announce des forums fortgeschrittener lesen und respektieren können.

                  http://www.iptc.org/cms/site/index.html?channel=CH0107
                  ist das dein format? wie kommst du bauf komplexeres xml?
                  da bin ich auch der meinung, xml oder eben nicht.
                  // update: was schon abgemeldet?

                  Kommentar


                  • #10
                    Zitat von g.dola Beitrag anzeigen
                    Nein es ist NITF. Und es wird im Web wenn man mal googelt und sein Hirn benutzt als komplexeres XML beschrieben. Naja euch Erbsenzählern und blöde Forenbeiträge-Verfassern noch einen schönen Tag
                    Süss

                    Es ist XML-basiert, also XML. Ende. http://de.wikipedia.org/wiki/NITF_(XML)
                    [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

                    Kommentar


                    • #11
                      Wurde nicht erst kürzlich wieder darüber diskutiert, wie wahnsinnig unfair neue Nutzer behandelt werden? Das ist doch mal wieder ein Paradebeispiel dafür, mit welcher irrsinnigen Erwartungshaltung und Engstirnigkeit diese Nutzer gerne mal hier aufschlagen.

                      [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

                      Kommentar


                      • #12
                        Und deren, interessanter Weise, häufig maßlosen Selbstüberschätzung.
                        The string "()()" is not palindrom but the String "())(" is.

                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          Zitat von g.dola Beitrag anzeigen
                          Nein es ist NITF. Und es wird im Web wenn man mal googelt und sein Hirn benutzt als komplexeres XML beschrieben. Naja euch Erbsenzählern und blöde Forenbeiträge-Verfassern noch einen schönen Tag
                          Ich bin zwar unsicher ob du das noch lesen wirst, aber...

                          Ich hab jetzt mal "gegoogled" und mir die examples der NITF-Feeds angesehen, die XML-Feeds sind alles andere als Komplex und mit DOMDocument ( im PHP Core enthalten ) ein kleines Problem auszulesen. Großartig Parsen musst du da nicht, mit Hilfe von XPATH hast du das was du brauchst in 5-8 Zeilen Code. Alternativ dazu kannst du auch XSLT verwenden um einen NTIF-Feed in einen RSS2.0 Feed umzubauen sodass du eine der unzähligen RSS-Feed Klassen nutzen kannst, die auch mit den neuesten Versionen von PHP kompatibel sind.

                          Das Tool was du nutzt war für PHP4 entwickelt und nur bedingt PHP5 tauglich, steinzeit also.
                          [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


                          • #14
                            NITF ist einfaches XML. Bei den Namen der Elemente hat man sich sehr von HTML inspirieren lassen und hat einige Elemente und Attribute für Urheber und Quellen hinzugefügt. Es gibt zwar einige seltsame Konstrukte wie <head> und <body.head> und<hedline> (sic!) aber eine standardkonforme NITF-Datei lässt sich relativ einfach mit DOM und XPath oder SimpleXML auslesen.

                            Die Komplexität kommt erst durch die unterschiedlichen Implementierungen zustande. Hier werden manchmal Namesspaces verwendet oder eben auch nicht (siehe auch offizielle Beispiele). Auch sind mir schon einige Implementierung bekannt die einfach neue Elemente (ohne Namespaces) hinzugefügt haben oder es wurden vorhandene Elemente und Attribute nicht standardkonform anderen Anforderungen angepasst.

                            Auch kommt es nicht gerade selten vor, dass gewohnte (und undefinierte) HTML-Elemente und HTML-Entities in den NITF-Dateien verwendet werden.


                            Am Ende ist es nicht schwer einen eigenen Parser per DOM mit XPath oder SimpleXML zu schreiben, aber es muss bei jeder Anbindung an ein neues System immer unnötig viel getestet werden, da jeder seinen eigenen "NITF-Standard" benutzt.

                            Kommentar

                            Lädt...
                            X