Linuchs: Werte aus Textdatei exhumieren

0145

Werte aus Textdatei exhumieren

  1. 1
    1. 0
      1. 0
      2. 0
        1. 0
          1. 0
            1. 0
              1. 0
                1. 2
                  1. 0
                    1. 0
  2. -2
    1. 2
      1. 0
        1. 0
          1. 0
        2. 2
          1. 0
            1. 0
            2. 5
              1. 0
              2. 0
                1. 1
                  1. 0
                    1. 1
                      1. 0
                        1. 0
                          1. 0
                            1. 4
                              1. 2
                              2. 0
                                1. 1
                                  1. 0
                                    1. 0
                                    2. 0
                                    3. 0
                                  2. 0

                                    HTML parsen

                                    1. 0
                                      1. 0
                                        1. 0
                                          1. 0
                                            1. 0
                                              1. 0
                                                1. 0
                                                  1. 0
                                                    1. 0
                                                    2. 0
                                                      1. 0
                                                      2. 0
                                                        1. 0
                                                          1. 0
                                                            1. 0
                                                              1. 0
                                2. 0
                                3. 1
                            2. 0
                              1. 0
                            3. 0
                              1. 1
                              2. 0
                                1. 1
                                2. 0
                                  1. 0
                                  2. 1
                        2. 0
                2. 1
                  1. 0
                    1. 0
                  2. 0
                    1. 0
                      1. 0
                        1. 0
                          1. 0
                            1. 0
                              1. 0
                                1. 0
                                  1. 0
                                    1. 0
                                      1. 0
                                        1. 0
                                          1. 0
                                            1. 0
                                              1. 0
                                                1. 2
                                                  1. 0
                                                    1. 1
                                                      1. 0
                                                      2. 0
                                                      3. 0

                                                        lon/lat precision

                                                        1. 0
                                                          1. 0
                                                            1. 0
                                                              1. 0
                                                            2. 0
                                                              1. 0
                                                          2. 0
                                                            1. 0
                                                              1. 0
                                                                1. 0
                                                          3. 0
                                                            1. 0
                                                              1. 0
                                                                1. 0
                                                                  1. 0
                                                                    1. 0
                                                                      1. 0
                                                                    2. 0
                                                                      1. 0
                                                                2. 0
                                                                  1. 0
                                                                    1. 0
                                                                3. 1
                                                                  1. 0
                                                                    1. 0
                                                                      1. 0
                                                                        1. 0
                                                                          1. 0
                                                                            1. 0
                                                                          2. 0
                                                                            1. 0
                                                              2. 0
                                                            2. 0
                                                    2. 0
                                                      1. 0
                                      2. 0
                                2. 0
                                3. 0
                            2. 0
                    2. 0
                    3. 0
                      1. 0
        3. 2
        4. 0
          1. 0
    2. 0
    3. 0
      1. 1
  3. 2
    1. 0
      1. 0
  4. 0
    1. 0
      1. 0
        1. 0

problematische Seite

... ich weiss, es heisst extrahieren. Aber der Verschreiber war zu schön, um ihn wegzuwerfen 😉

Sehr mühsam habe ich mich auf einer Landkarte abgequält, gewisse Orte auf Radfernwegen zu markieren. Die Orte (z.B. in NL) mussten angelegt und mit Geo-Koordinaten versehen werden.

Heute entdecke ich Tracking-Dateien zum Runterladen. Sowas:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> ... <trkpt lat="53.188185" lon="7.216993"></trkpt> <trkpt lat="53.184541" lon="7.217456"></trkpt> ...

Diese trkpt Werte interessieren mich. Gibt es für PHP ein Kommando, die zu extrahieren?

Ein Array mit lat-Werten und eines mit lon-Werten wäre ideal.

Linuchs

  1. problematische Seite

    Hallo Linuchs,

    is doch XML, nimmst Du XML Tools. Davon hat PHP einen ganzen Sack voll. Die einen simpel, die anderen komplex. Je nach Bedarf an Funktion und Performance.

    Ich hab noch kein XML in PHP konsumiert und kann deswegen schlecht empfehlen, was für deinen Zweck am einfachsten ist.

    XML Parser ist ein SAX-Parser, stand da, d.h. das Teil läuft selbstständig durch das XML Dokument und signalisiert Dir unterwegs, was er findet (eine Art Visitor-Pattern).

    SimpleXML behauptet von sich, deine Anforderung besonders simpel zu erfüllen - aber probiert hab ich es nicht.

    Rolf

    -- sumpsi - posui - clusi
    1. problematische Seite

      @@Rolf B

      is doch XML, nimmst Du XML Tools.

      Was auch ein XSLT-Prozessor sein kann.

      LLAP 🖖

      -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
      1. problematische Seite

        Tach!

        is doch XML, nimmst Du XML Tools.

        Was auch ein XSLT-Prozessor sein kann.

        Dazu braucht es einen passenden Anwendungsfall. Ein XSLT-Prozessor konvertiert ein XML-Dokument in ein anderes Dokument (beliebigen Formates). Wenn man aber kein weiteres Dokument haben möchte, sondern nur die Werte extrahiert, um mit ihnen weiterzuarbeiten, ist XSLT nicht die beste Vorgehensweise.

        dedlfix.

      2. problematische Seite

        Hi @Gunnar Bittersmann

        is doch XML, nimmst Du XML Tools.

        Was auch ein XSLT-Prozessor sein kann.

        D.h., den Browser dazu einzusetzen. Die Idee ist gut!!!

        MfG

        1. problematische Seite

          @@pl

          is doch XML, nimmst Du XML Tools.

          Was auch ein XSLT-Prozessor sein kann.

          D.h., den Browser dazu einzusetzen. Die Idee ist gut!!!

          ?? Was hat ein XSLT-Prozessor mit einem Browser zu tun?

          LLAP 🖖

          -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
          1. problematische Seite

            @@pl

            is doch XML, nimmst Du XML Tools.

            Was auch ein XSLT-Prozessor sein kann.

            D.h., den Browser dazu einzusetzen. Die Idee ist gut!!!

            ?? Was hat ein XSLT-Prozessor mit einem Browser zu tun?

            Ich dachte der ist da eingebaut? Isser das nicht? Schließlich kann ein Browser ja auch XML parsen.

            MfG

            1. problematische Seite

              @@pl

              is doch XML, nimmst Du XML Tools.

              Was auch ein XSLT-Prozessor sein kann.

              D.h., den Browser dazu einzusetzen. Die Idee ist gut!!!

              ?? Was hat ein XSLT-Prozessor mit einem Browser zu tun?

              Ich dachte der ist da eingebaut? Isser das nicht? Schließlich kann ein Browser ja auch XML parsen.

              Ja, manch Browser hat einen XSLT-Prozessor an Bord. Es gibt aber auch XSLT-Prozessoren außerhalb von Browsern.

              LLAP 🖖

              -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
              1. problematische Seite

                Hi @Gunnar Bittersmann

                is doch XML, nimmst Du XML Tools.

                Was auch ein XSLT-Prozessor sein kann.

                D.h., den Browser dazu einzusetzen. Die Idee ist gut!!!

                ?? Was hat ein XSLT-Prozessor mit einem Browser zu tun?

                Ich dachte der ist da eingebaut? Isser das nicht? Schließlich kann ein Browser ja auch XML parsen.

                Ja, manch Browser hat einen XSLT-Prozessor an Bord.

                Na das ist doch prima. Da können wir das an Ort und Stelle gleich da verarbeiten wo es gebraucht wird. Deswegen finde ich die Idee gut, auch weil man das nutzen kann was ohnehin vorhanden ist.

                MfG

                1. problematische Seite

                  Hallo zusammen,

                  Hi @Gunnar Bittersmann

                  Ja, manch Browser hat einen XSLT-Prozessor an Bord.

                  Na das ist doch prima. Da können wir das an Ort und Stelle gleich da verarbeiten wo es gebraucht wird. Deswegen finde ich die Idee gut, auch weil man das nutzen kann was ohnehin vorhanden ist.

                  Browser unterstützen, wenn überhaupt, nur XSLT 1.0 (wie auch PHP). Allerdings legen die Hersteller generell wenig Wert darauf. Google wollte sogar XSLT aus Chrome verbannen, dazu gab es zumindest ziemlich heftige Diskussionen auf einer Mailingliste.

                  Michael Kay hat mit seinem Team den Saxon-Prozessor nach JavaScript portiert, erst als Saxon-CE und neuerdings als Saxon-JS. Ist etwas speziell in der Nutzung, aber eine interessante Alternative für den Einsatz von XSLT 3.0 und XPath 3.1 im Browser. Einige Details finden sich in diesem Vortrag.

                  Grüße,
                  Thomas

                  1. problematische Seite

                    1. problematische Seite

                      Hallo pl,

                      All major browsers have a built-in XML parser to access and manipulate XML.

                      Durchaus, aber ich bezog mich auf die XSLT-Diskussion.

                      Grüße,
                      Thomas

  2. problematische Seite

    Hallo Linuchs,

    ... ich weiss, es heisst extrahieren. Aber der Verschreiber war zu schön, um ihn wegzuwerfen 😉

    Ich finde es auch lustig 😉

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?> ... <trkpt lat="53.188185" lon="7.216993"></trkpt> <trkpt lat="53.184541" lon="7.217456"></trkpt> ...

    Diese trkpt Werte interessieren mich. Gibt es für PHP ein Kommando, die zu extrahieren?

    Ein Array mit lat-Werten und eines mit lon-Werten wäre ideal.

    Viele Wege führen nach Rom... hier mal einer:

    *Was die Regex betrifft, auch wenn sie funktioniert wie gewünscht, ist sie bestimmt nicht perfekt, das sollte dann jemand verbessern der sich damit besser auskennt😉

    <?PHP // // Text, der durchsucht werden soll // $subject = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> ... <trkpt lat=\"53.188185\" lon=\"7.216993\"></trkpt> <trkpt lat=\"53.184541\" lon=\"7.217456\"></trkpt>'; // // Der Reguläre Ausdruck // $pattern = '@<trkpt .*="(.*)".*"(.*)">@isU'; // // RegExp auswerten // $result = preg_match_all($pattern, $subject, $subpattern); // // Ergebnis ausgeben // echo '<p>Der verwendete Reguläre Ausdruck trifft auf den zu durchsuchenden Text '. (($result) ? $result.' mal ' : 'nicht ').'zu.</p>'; // // Unterausdrücke ausgeben // echo '<pre>'.print_r($subpattern, TRUE).'</pre>'; ?>

    Resultat:

    Array ( [0] => Array ( [0] => <trkpt lat="53.188185" lon="7.216993"> [1] => <trkpt lat="53.184541" lon="7.217456"> ) [1] => Array ( [0] => 53.188185 [1] => 53.184541 ) [2] => Array ( [0] => 7.216993 [1] => 7.217456 ) )

    Und um das Ganze auszuprobieren: Hier

    Gruss
    Henry

    1. problematische Seite

      Tach!

      *Was die Regex betrifft, auch wenn sie funktioniert wie gewünscht, ist sie bestimmt nicht perfekt, das sollte dann jemand verbessern der sich damit besser auskennt😉

      Es ist einfacher, wenn man die Dinge auf direktem Wege erledigen kann. Das Ziel ist hier, Werte aus einem XML zu extrahieren. Der direkte Weg ist dabei, einen XML-Parser zu nehmen, der heutzutage ein Standardwerkzeug in den Programmiersprachenbibliotheken ist, statt sich auf einen Umweg mit einem Regex-Ausdruck zu begeben. Mit SimpleXML hat man in PHP ein sehr einfach zu bedienendes Werkzeug für das Lesen von XML.

      dedlfix.

      1. problematische Seite

        Hallo dedlfix,

        Es ist einfacher, wenn man die Dinge auf direktem Wege erledigen kann. Das Ziel ist hier, Werte aus einem XML zu extrahieren. Der direkte Weg ist dabei, einen XML-Parser zu nehmen, der heutzutage ein Standardwerkzeug in den Programmiersprachenbibliotheken ist, statt sich auf einen Umweg mit einem Regex-Ausdruck zu begeben. Mit SimpleXML hat man in PHP ein sehr einfach zu bedienendes Werkzeug für das Lesen von XML.

        wie ich schon schrieb... Viele Wege führen nach Rom. Und die Überschrift, wenn irgend jemand das mal durch Websuche findet, lautet aus Textdatei, also global. Deshalb mich direkt negativ zu bewerten, als wenn mein Vorschlag falsch wäre, ist (meiner Meinung nach) schon etwas... na ja du weißt schon😉

        Gruss
        Henry

        1. problematische Seite

          Tach!

          wie ich schon schrieb... Viele Wege führen nach Rom. Und die Überschrift, wenn irgend jemand das mal durch Websuche findet, lautet aus Textdatei, also global.

          Wenn man auf eine verbesserungswürdige Fragestellung mit einer Lösung kommt, die das eigentliche Problem ignoriert, dann ist das nicht unbedingt ein Gewinn für andere Suchende. Außerdem hast du darum gebeten, dass es jemand besser macht. Da habe ich nur deinen Wunsch erfüllt.

          Deshalb mich direkt negativ zu bewerten, als wenn mein Vorschlag falsch wäre, ist (meiner Meinung nach) schon etwas... na ja du weißt schon😉

          Weiß ich nicht, muss ich auch nicht wissen, ich war's nicht. Aber offensichtlich bin ich nicht allein mit meiner Meinung.

          dedlfix.

          1. problematische Seite

            Hallo dedlfix,

            Wenn man auf eine verbesserungswürdige Fragestellung mit einer Lösung kommt, die das eigentliche Problem ignoriert, dann ist das nicht unbedingt ein Gewinn für andere Suchende. Außerdem hast du darum gebeten, dass es jemand besser macht. Da habe ich nur deinen Wunsch erfüllt.

            Die Frage ist ganz und gar nicht verbesserungswürdig( mal abgesehen von der lustigen Grabschändung 😉 ) Und der Verbesserungswunsch war klar auf den regulären Ausdruck bezogen

            Der Fragesteller hat nur ein Beispiel genannt, was zufällig XML ist, neim nächsten mal braucht er das viell. für ein anderes Format. Insofern, dürfte der Lerneffekt bei meinem Beispiel wesentlich höher ausfallen.

            Deshalb mich direkt negativ zu bewerten, als wenn mein Vorschlag falsch wäre, ist (meiner Meinung nach) schon etwas... na ja du weißt schon😉

            Weiß ich nicht, muss ich auch nicht wissen, ich war's nicht. Aber offensichtlich bin ich nicht allein mit meiner Meinung.

            Dann sorry... kam halt zeitgleich.

            Gruss
            Henry

        2. problematische Seite

          @@Henry

          Viele Wege führen nach Rom.

          Viele, aber nicht alle.

          Deshalb mich direkt negativ zu bewerten

          Ich war’s.

          als wenn mein Vorschlag falsch wäre

          Reguläre Ausdrücke einzusetzen, wenn man ein Parser verwenden sollte, halte ich für grundsätzlich falsch.

          Und abgesehen davon ist auch dein regulärer Ausdruck falsch; in <trkpt lat="53.188185" lon="7.216993"/> findet der nichts.

          LLAP 🖖

          -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
          1. problematische Seite

            Hallo Gunnar,

            Deshalb mich direkt negativ zu bewerten

            Ich war’s.

            Hab ich mir schon gedacht... ist ja auch schneller als eine Lösung zu präsentieren.

            als wenn mein Vorschlag falsch wäre

            Reguläre Ausdrücke einzusetzen, wenn man ein Parser verwenden sollte, halte ich für grundsätzlich falsch.

            Und abgesehen davon ist auch dein regulärer Ausdruck falsch; in <trkpt lat="53.188185" lon="7.216993"/> findet der nichts.

            keine Ahnung wo der Wert auftaucht und ist ja auch leicht anzupassen, wobei du hier jetzt mal, anstatt nur zu meckern, die Regex hättest anpassen können.

            Gruss
            Henry

            1. problematische Seite

              @@Henry

              wobei du hier jetzt mal, anstatt nur zu meckern, die Regex hättest anpassen können.

              Warum sollte ich das tun??

              Regex ist grundsätzlich der falsche Weg. Ein verbesserter Regex ist immer noch nicht gut.

              LLAP 🖖

              -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
            2. problematische Seite

              Tach!

              Hab ich mir schon gedacht... ist ja auch schneller als eine Lösung zu präsentieren.

              Meiner Meinung nach kommt es nicht darauf an, Lösungen zu präsentieren, sondern beim Lösungen finden zu helfen. Das Stichwort XML-Tools für XML zu verwenden kam ja bereits. Das reicht erstmal für den Anfang, um den Weg zu finden.

              Eine Lösung zu erarbeiten, bringt hauptsächlich demjenigen Übung und Erfahrung, der sie erstellt. Und im Hinterkopf spukt meist auch noch das Belohnungszentrum herum und möchte ein Lob für die Lösung sehen. Andererseits nimmt diese Lösung dem Probleminhaber ein Stück weit die Möglichkeit vorweg, sich selbst diese Erfahrung anzueignen. Zum Lernen gehört nämlich auch der Irrtum als Erkenntnis, dass es auf bestimmte Weisen eben nicht geht. Dieses Beschäftigen mit dem Thema möchte ich nicht abkürzen, und deshalb halte ich mich mit konkreten Lösungen üblicherweise zurück und erkläre lieber den Weg, den ich nehmen würde. Natürlich gibt es Unterschiede beim Lernen, die einen lernen lieber durch Abschauen und Nachvollziehen. Ja, und noch viele andere Arten. Den universellen Weg wird es nicht geben. Aber im Zweifelsfall kann man immer noch einen Lösungsvorschlag nachreichen, wenn man merkt, dass jemand allein mit Hinweisen noch nicht zum Ziel kommt.

              dedlfix.

              1. problematische Seite

                @@dedlfix

                das Belohnungszentrum

                Welches hier hervorragend funktioniert. Kaum liefert man die Begründung für die Negativbewertung des Postings mit Regex nach, wird diese mit einem Minuspunkt belohnt.

                Dieses Beschäftigen mit dem Thema möchte ich nicht abkürzen, und deshalb halte ich mich mit konkreten Lösungen üblicherweise zurück und erkläre lieber den Weg, den ich nehmen würde.

                +1

                LLAP 🖖

                -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
              2. problematische Seite

                Hallo dedlfix,

                seh ich in vielen Punkten genau so. Ich halte mich in der Regel mit fertigen Lösungen auch zurück und das hier ist auch nicht als solche zu sehen. Denn, es geht darum Strukturen eines Contents zu erkennen und auszufiltern. Ja, in diesem Fall geht sowohl meine als auch eine XMP-Parse Geschichte. Allerdings keine davon wenn der Content ein anderes Format/Struktur aufweist. Und jetzt komme ich zum Lerneffekt, welcher Lösungsvorschlag hat da mehr Flexibilität? Letztendlich ist es mir egal wie der Fragesteller das jetzt löst, wichtig ist mir aber, dass ein anderer Leser sich seine eigenen Lösungen aus den bisherigen Vorschlägen ableiten kann und da ist die Verständnisfrage einen XML-Parser zu nutzen zwar empfehlend aber auch bedenklich das als einzig wahre Lösung zu präsentieren, wenn ich deine eigene Lehrmeinung zu Grunde lege, denn dann ist es eine fertige Lösung, deren Aufbau man nicht unbedingt versteht und sich wundert, sobald es eben keine XML-Datei ist.

                Gruss
                Henry

                1. problematische Seite

                  Tach!

                  Und jetzt komme ich zum Lerneffekt, welcher Lösungsvorschlag hat da mehr Flexibilität?

                  Darauf kommt es nicht unbedingt an. Konkrete Probleme löst man am besten mit konkreten Lösungen. Flexible Lösungen sind üblicherweise Kompromisse. Man braucht Flexibilität nur, wenn man ein Werkzeug erstellen möchte, das mit möglichst vielen Problemen umgehen können soll. Mit Text-Werkzeugen auf Strukturen losgehen, für die es Parser gibt, die das Problem mit dem korrekten Erkennen der Syntax bereits gelöst haben, ist ein ziemlich schlechter Kompromiss. Schlechte aber flexible Lösungen aufzusetzen, nur damit man für Änderungen gerüstet ist, die in absehbarer Zeit wohl eher nicht eintreten werden, sehe ich nicht als einen Vorteil an. Weder im konkreten Fall noch allgemein. Auf Änderungen im XML-Format kann man aber mit einem XML-Parser sehr einfach reagieren. Man muss nur ein anderes Element ansprechen oder einen anderen Weg zum bisherigen nehmen. Das ist gerade mit SimpleXML ein Kinderspiel. Auf diese Einfachheit ist es ausgelegt und deshalb heißt es auch "Simple"XML. Der RegExp-Weg bringt nur dann einen Vorteil, wenn auf ein Dateiformat gewechselt wird, das proprietär ist und für das es auch (noch) keinen Parser gibt. Das wird wohl hier auch nicht passieren.

                  Letztendlich ist es mir egal wie der Fragesteller das jetzt löst, wichtig ist mir aber, dass ein anderer Leser sich seine eigenen Lösungen aus den bisherigen Vorschlägen ableiten kann

                  Eine Antwort auf eine konkrete Frage ist in aller Regel kein allgemeingültiges Tutorial, dass alle Aspekte ähnlicher Problemstellungen berücksichtigen muss oder sollte. Ein anderer Leser sollte den Antworten besser entnehmen, dass es zu bevorzugen wäre, einen vorhandenen Parser für ein konkretes Dateiformat zu nehmen, statt alles als Text zu betrachten und mit dem RegExp-Hammer draufzuschlagen.

                  und da ist die Verständnisfrage einen XML-Parser zu nutzen zwar empfehlend aber auch bedenklich das als einzig wahre Lösung zu präsentieren,

                  Den Anspruch hatte ich nicht, aber trotzdem sollte man auch darauf hinweisen dürfen, wenn einem andere Lösungen suboptimal erscheinen.

                  wenn ich deine eigene Lehrmeinung zu Grunde lege, denn dann ist es eine fertige Lösung, deren Aufbau man nicht unbedingt versteht und sich wundert, sobald es eben keine XML-Datei ist.

                  Einen XML-Parser zu empfehlen, ist noch lange nicht die fertige Lösung. Da muss erstmal die Bedienung angeschaut werden und dann muss man einen konkreten Ausdruck formulieren, um das gewünschte Element anzusprechen.

                  Ich habe auch weiterhin nicht den Anspruch auf die einzig wahre Lösung. Aber ich kenne auch keine Alternative (oder mir fällt sie grad nicht ein) zu einem Parser für ein konkretes bekanntes Datenformat, der zuverlässig und meistens auch hinreichend einfach anwendbar ist, so dass ich keine andere Lösung präsentieren kann.

                  dedlfix.

                  1. problematische Seite

                    Hallo dedlfix,

                    Eine Antwort auf eine konkrete Frage ist in aller Regel kein allgemeingültiges Tutorial, dass alle Aspekte ähnlicher Problemstellungen berücksichtigen muss oder sollte. Ein anderer Leser sollte den Antworten besser entnehmen, dass es zu bevorzugen wäre, einen vorhandenen Parser für ein konkretes Dateiformat zu nehmen, statt alles als Text zu betrachten und mit dem RegExp-Hammer draufzuschlagen.

                    Für mich ist die Frage nicht an ein spezielles Format geknüpft, sondern nur ein Beispiel genannt. Dateien, die(und diese Aufgabe hatte ich schon oft) als Quelldatei genutzt werden gibt es jeder nur denkbaren Form und Struktur.

                    und da ist die Verständnisfrage einen XML-Parser zu nutzen zwar empfehlend aber auch bedenklich das als einzig wahre Lösung zu präsentieren,

                    Den Anspruch hatte ich nicht, aber trotzdem sollte man auch darauf hinweisen dürfen, wenn einem andere Lösungen suboptimal erscheinen.

                    Unbedingt! Nicht nur dürfen, sondern müssen. Aber da dieser Hinweis ja bereits vorhanden war, entschied ich mich nur das Ganze etwas mit einer Alternative zu ergänzen, die eben der eigentlichen Frage näher (aus meiner Sicht) kam.

                    Bleibt nur noch zu fragen was mit suboptimal gemeint, da dieser Begriff ja inflationär eingesetzt wird. Im Sinne von, in diesem konkreten Fall nicht der beste Weg aber brauchbar(womit ich klar käme) oder im Sinne von "totaler Müll", wie gewisse Leute(Gunnar) hier immer schnell sind beim klassifizieren, was ich eben nicht akzeptieren kann, bzw. bisher keine plausible Begründung dafür vorliegt meine Meinung ändern zu müssen.

                    Gruss
                    Henry

                    1. problematische Seite

                      @@Henry

                      … oder im Sinne von "totaler Müll", wie gewisse Leute(Gunnar) hier immer schnell sind beim klassifizieren, was ich eben nicht akzeptieren kann, bzw. bisher keine plausible Begründung dafür vorliegt meine Meinung ändern zu müssen.

                      Die Begründung dafür hatte ich schon längst geliefert. Wenn sie für dich nicht plausibel ist, ist das dein Problem.

                      Dein regulärer Ausdruck versagt wie gesagt schon bei

                      • <trkpt lat="53.188185" lon="7.216993"/> (Kurzschreibweise)

                      • <trkpt lat='53.188185' lon='7.216993'></trkpt> (anderen Anführungszeichen)

                      • <trkpt lat="53.188185" lon="7.216993"></trkpt> oder

                        <trkpt lat="53.188185" lon="7.216993" ></trkpt>

                        (anderen Whitespace-Zeichen)

                      Er versagt völlig bei

                      • <trkpt lon="7.216993" lat="53.188185"></trkpt> (andere Reihenfolge der Attribute)

                      Aus XML-Sicht sind all diese Schreibweisen völlig äquivalent. Ein verarbeitendendes Programm muss bei all diesen Schreibweisen dasselbe Ergebnis liefern. Ein richtiger XML-Parser wird das tun. Ein regulärer Ausdruck nicht.

                      Wie kompliziert du den Ausdruck auch bauen magst (regulär1 wird er dann nicht sein), ich werde eine XML-Schreibweise finden, bei der er versagt. Wetten?

                      LLAP 🖖

                      -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                      1. problematische Seite

                        Hallo Gunnar,

                        Dein regulärer Ausdruck versagt wie gesagt schon bei

                        • <trkpt lat="53.188185" lon="7.216993"/> (Kurzschreibweise)

                        • <trkpt lat='53.188185' lon='7.216993'></trkpt> (anderen Anführungszeichen)

                        • <trkpt lat="53.188185" lon="7.216993"></trkpt> oder

                          <trkpt lat="53.188185" lon="7.216993" ></trkpt>

                          (anderen Whitespace-Zeichen)

                        Er versagt völlig bei

                        • <trkpt lon="7.216993" lat="53.188185"></trkpt> (andere Reihenfolge der Attribute)

                        Na und? Ist ja auch nur angepasst an dem Beispiel. Also wenn aber blabla Möglichkeiten ins Spiel kommen, natürlich ist dann eine Anpassung erforderlich. Bei deinen fiktiven Beispielen passt ja schon grösstenteils <trkpt.*="(.*)".*"(.*)".*> wobei Attribut Reihenfolge sich auch noch durch Nennung des Namens verhindern ließe. Aber die Energie um hier fiktive (Da geht's aber nicht) Beispiel zu offerieren, könntest du besser darauf verwenden das für deine(denn nur darum geht's ja) Bedürfnisse anzupassen, der OP bräuchte es nämlich nicht, sofern die Struktur einheitlich bleibt.

                        Aus XML-Sicht sind all diese Schreibweisen völlig äquivalent. Ein verarbeitendendes Programm muss bei all diesen Schreibweisen dasselbe Ergebnis liefern. Ein richtiger XML-Parser wird das tun. Ein regulärer Ausdruck nicht.

                        Ach, und wie macht ein XML-Parser das? Sind die internen Routinen nicht gleich basierend?

                        Wie kompliziert du den Ausdruck auch bauen magst (regulär[^Chomsky-Hierarchie] wird er dann nicht sein), ich werde eine XML-Schreibweise finden, bei der er versagt. Wetten?

                        Würde ich gerne mal sehen und wäre bestimmt auch mal gut investierte Energie. Allerdings sollte die Quelldatei dann aber auch problemlos durch zb. simpleXML zu parsen sein. Na, dann lass mal sehen, bin gespannt.

                        Gruss
                        Henry

                        1. problematische Seite

                          @@Henry

                          Also wenn aber blabla Möglichkeiten ins Spiel kommen

                          Ich hab noch gar nicht mit „blabla Möglichkeiten“ angefangen (bspw. dass das trkpt-Element außer lon und lat noch andere Attribute haben könnte). Bisher war noch alles dieselbe Möglichkeit – in Variationen in der Schreibweise, die XML zulässt.

                          passt ja schon grösstenteils <trkpt.*="(.*)".*"(.*)".*>

                          Nein. Erwähnte ich schon Whitespace? <trkpt lat = "53.188185" lon = "7.216993"></trkpt>

                          der OP bräuchte es nämlich nicht, sofern die Struktur einheitlich bleibt.

                          Mit Struktur meinst du die innere Struktur innerhalb eines Tags? Die ist in XML nicht streng vorgegeben. Ein XML-verarbeitendes Programm muss dem Rechnung tragen.

                          Aus XML-Sicht sind all diese Schreibweisen völlig äquivalent. Ein verarbeitendendes Programm muss bei all diesen Schreibweisen dasselbe Ergebnis liefern. Ein richtiger XML-Parser wird das tun.

                          Ach, und wie macht ein XML-Parser das?

                          Aus XML-Quellcode sowas wie ein DOM generieren vielleicht?

                          Wie kompliziert du den Ausdruck auch bauen magst (regulär[^Chomsky-Hierarchie] wird er dann nicht sein), ich werde eine XML-Schreibweise finden, bei der er versagt. Wetten?

                          Würde ich gerne mal sehen und wäre bestimmt auch mal gut investierte Energie. Allerdings sollte die Quelldatei dann aber auch problemlos durch zb. simpleXML zu parsen sein. Na, dann lass mal sehen, bin gespannt.

                          Nein, du bist am Zug. Du hast noch keinen Ausdruck gezeigt, der die bisher schon vorgebrachten Schreibweisen abdeckt.

                          LLAP 🖖

                          -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                          1. problematische Seite

                            grrr... alles nochmal neu schreiben weil aus Versehen auf zurück (nicht das erste Mal). Mal Frage/Bitte an die Admins hier, wäre eine automatische Speicherung auf Web-Storage Basis irgendwann denkbar?

                            Hallo Gunnar,

                            passt ja schon grösstenteils <trkpt.*="(.*)".*"(.*)".*>

                            Nein. Erwähnte ich schon Whitespace? <trkpt lat = "53.188185" lon = "7.216993"></trkpt>

                            Was soll das hier? Ich sagte doch schon Anpassungen sollte eigentlich jemand vornehmen, der mehr Übung in Sachen regex hat. Warum kommst du immer wieder mit neuen Ausnahmen, obwohl du weisst, dass diese relativ leicht einzubauen sind. Na ja, wenn Du dir zu fein bist das selbst anzupassen <trkpt.*=*"(.*)".*"(.*)".*>

                            Nun auch gähn...Whitespace

                            Übrigens, wenn du dort siehst wie ich deinen Kram dort reingemüllt habe, wüsste ich gern wie ein Parser damit zurecht käme, was ich ja im Gegenzug als Ausnahmefall anprangern könnte, eben was wenn es kein XML ist oder die XML Datei falsch aufgebaut...

                            Ach, und wie macht ein XML-Parser das?

                            Aus XML-Quellcode sowas wie ein DOM generieren vielleicht?

                            Durch Zauberei oder doch viell. auch durch Befehle, evtl. reguläre Ausdrücke?

                            Wie kompliziert du den Ausdruck auch bauen magst (regulär[^Chomsky-Hierarchie] wird er dann nicht sein), ich werde eine XML-Schreibweise finden, bei der er versagt. Wetten?

                            Würde ich gerne mal sehen und wäre bestimmt auch mal gut investierte Energie. Allerdings sollte die Quelldatei dann aber auch problemlos durch zb. simpleXML zu parsen sein. Na, dann lass mal sehen, bin gespannt.

                            Nein, du bist am Zug. Du hast noch keinen Ausdruck gezeigt, der die bisher schon vorgebrachten Schreibweisen abdeckt.

                            Neee bestimmt nicht... Ein klares Beispiel ohne Wenn und Aber. Nicht immer wieder Ausnahmen zusammenpflücken und daraus ein Ping-Pong Match machen.

                            Gruss
                            Henry

                            1. problematische Seite

                              Hallo Henry,

                              passt ja schon grösstenteils <trkpt.*="(.*)".*"(.*)".*>

                              Nein. Erwähnte ich schon Whitespace? <trkpt lat = "53.188185" lon = "7.216993"></trkpt>

                              Was soll das hier? Ich sagte doch schon Anpassungen sollte eigentlich jemand vornehmen, der mehr Übung in Sachen regex hat.

                              Als jemand, der sich ausgesprochen gut mit Regexen auskennt (sogar soweit, dass ich mal eine Engine dafür implementiert habe, um mein Verständnis zu verbessern) lass dir sagen: parse niemals XML (oder HTML) mit Regexen. Du wirst dir früher oder später eine blutige Nase holen. Das ist die Quintessenz aus allen meinen Erfahrungen damit. Ich verstehe, dass es dir sauer aufstösst, wenn dir jemand sagt „die Lösung war kacke,“ aber ich will dir nichts böses damit, im Gegenteil: ich erspare dir Stunden von Schmerzen.

                              Warum kommst du immer wieder mit neuen Ausnahmen, obwohl du weisst, dass diese relativ leicht einzubauen sind.

                              Weil man sie immer wieder einbauen muss. Jedesmal, wenn z.B. die Version des XML-Serializers, der genutzt wird diese Daten zu erzeugen, sich ändert, kann sich auch die Schreibweise ändern. XML ist ausgesprochen flexibel und lässt Unmengen von sich äquivalenten Schreibweisen zu.

                              Natürlich kannst du jetzt hingehen und jedesmal deinen Algorithmus anpassen. Und irgendwann hast du dann einen vollwertigen XML-Parser implementiert. Aus deiner Abkürzung mit den Regexen ist dann ein grosses Projekt geworden. Nur - wofür? XML-Parser gibt es bereits in ausreichender Menge, das ist ein gelöstes Problem.

                              […] eben was wenn es kein XML ist oder die XML Datei falsch aufgebaut...

                              Wenn es kein XML ist, verwendet man ein anderes Tool um die Daten zu parsen. Das Argument ist doch nicht „verwende immer XML-Parser,“ das hat Gunnar nicht gesagt und Dedlfix und ich auch nicht. Das Argument ist „verwende das richtige Tool für den richtigen Job.“

                              Ach, und wie macht ein XML-Parser das?

                              Aus XML-Quellcode sowas wie ein DOM generieren vielleicht?

                              Durch Zauberei oder doch viell. auch durch Befehle, evtl. reguläre Ausdrücke?

                              Wenn du wissen möchtest, wie XML-Parser funktionieren, schau dir XML-Parser an. Deren Sourcen sind idR offen, das sind aber auch ziemlich komplizierte Stücke Software. Meistens werden jedoch keine regulären Ausdrücke verwendet, sondern ein vollständiger Parser-Stack inklusive Lexer. Der Lexer kann Regexe zur Hilfe nehmen, um XML in Tokens zu zerlegen, aber er wird nicht XML mit Regexen parsen so wie du es hier tust.

                              LG,
                              CK

                              -- https://wwwtech.de/about
                              1. problematische Seite

                                [...] parse niemals XML (oder HTML) mit Regexen. Du wirst dir früher oder später eine blutige Nase holen. Das ist die Quintessenz aus allen meinen Erfahrungen damit.

                                This! +100

                                Ich verstehe, dass es dir sauer aufstösst, wenn dir jemand sagt „die Lösung war kacke,“ aber ich will dir nichts böses damit, im Gegenteil: ich erspare dir Stunden von Schmerzen.

                                Genau das habe ich vor vielen Jahren genau bei der Nummer auch durchgemacht. Es war im ersten Moment einfach so verlockend ;-) Im Laufe der Zeit wurden aus den Stunden dann aber locker Tage des Schmerzes. Lernen durch Schmerz. Lesson learned.

                              2. problematische Seite

                                Hallo Christian,

                                Als jemand, der sich ausgesprochen gut mit Regexen auskennt (sogar soweit, dass ich mal eine Engine dafür implementiert habe, um mein Verständnis zu verbessern) lass dir sagen: parse niemals XML (oder HTML) mit Regexen. Du wirst dir früher oder später eine blutige Nase holen. Das ist die Quintessenz aus allen meinen Erfahrungen damit. Ich verstehe, dass es dir sauer aufstösst, wenn dir jemand sagt „die Lösung war kacke,“ aber ich will dir nichts böses damit, im Gegenteil: ich erspare dir Stunden von Schmerzen.

                                hat sich in den letzten Jahren soviel verändert, dass der Gebrauch von Regex in so einem Fall schon einer Todsünde gleich kommt? Offensichtlich. Ich kann mich noch gut an die Zeit erinnern, als PHP noch keine brauchbaren XML-Parser mitbrachte und überall im Netz allerlei Scripte auf rege Nachfrage stießen, die das Problem ebenso mit Stringfunktionen und/oder Regex angingen. War ja auch eigentlich kein großes Ding, denn letztendlich bleibts ja doch nur ne simple Textdatei mit einer Struktur die es zu erkennen gilt. Daher tue ich mich verständlicherweise schwer das Ganze als so problematisch anzusehen, wenn das was vorher gut war auf einmal extrem schlecht sein soll. Aber gut, auch wenn ich es jetzt nicht ganz nachvollziehen kann, so vertraue ich doch mal auf die Crowdkompetenz hier. Aber nur um das nochmal klarzustellen, ich habe nie gesagt hier sollte man mit Regex dran gehen, sondern nur es wäre eine Option von vielen, und vor allem wenn es gar nicht um XML geht und damit komme ich direkt zum nächsten Punkt...

                                Wenn es kein XML ist, verwendet man ein anderes Tool um die Daten zu parsen. Das Argument ist doch nicht „verwende immer XML-Parser,“ das hat Gunnar nicht gesagt und Dedlfix und ich auch nicht. Das Argument ist „verwende das richtige Tool für den richtigen Job.“

                                Was wäre das dann für ein Tool, wenn zb. die vorliegende Datei jetzt nur eine simple Textdatei wäre oder ein Sammelsurium aus zusammenkopierten Inhalten in einer inkonformen HtmlDatei?

                                Gruss
                                Henry

                                1. Hallo Henry,

                                  Als jemand, der sich ausgesprochen gut mit Regexen auskennt (sogar soweit, dass ich mal eine Engine dafür implementiert habe, um mein Verständnis zu verbessern) lass dir sagen: parse niemals XML (oder HTML) mit Regexen. Du wirst dir früher oder später eine blutige Nase holen. Das ist die Quintessenz aus allen meinen Erfahrungen damit. Ich verstehe, dass es dir sauer aufstösst, wenn dir jemand sagt „die Lösung war kacke,“ aber ich will dir nichts böses damit, im Gegenteil: ich erspare dir Stunden von Schmerzen.

                                  hat sich in den letzten Jahren soviel verändert, dass der Gebrauch von Regex in so einem Fall schon einer Todsünde gleich kommt?

                                  You don't get it. Nicht der Gebrauch von Regexen ist eine Todsünde, sondern der Gebrauch von Regexen zum parsen von HTML oder XML. Das schrieb ich aber auch ganz ausdrücklich, du hast es selber zitiert.

                                  Offensichtlich. Ich kann mich noch gut an die Zeit erinnern, als PHP noch keine brauchbaren XML-Parser mitbrachte und überall im Netz allerlei Scripte auf rege Nachfrage stießen, die das Problem ebenso mit Stringfunktionen und/oder Regex angingen.

                                  Nur weil viele Leute das Problem auf die gleiche Weise angingen heisst das nicht, dass es die richtige Methode war.

                                  War ja auch eigentlich kein großes Ding, denn letztendlich bleibts ja doch nur ne simple Textdatei mit einer Struktur die es zu erkennen gilt. Daher tue ich mich verständlicherweise schwer das Ganze als so problematisch anzusehen, wenn das was vorher gut war auf einmal extrem schlecht sein soll.

                                  Nein, es war auch vorher nicht gut. Nur waren damals, als XML neu war, noch viele Leute naiv genug es zu versuchen. Und die haben sich eine blutige Nase geholt dabei 😉

                                  Wenn es kein XML ist, verwendet man ein anderes Tool um die Daten zu parsen. Das Argument ist doch nicht „verwende immer XML-Parser,“ das hat Gunnar nicht gesagt und Dedlfix und ich auch nicht. Das Argument ist „verwende das richtige Tool für den richtigen Job.“

                                  Was wäre das dann für ein Tool, wenn zb. die vorliegende Datei jetzt nur eine simple Textdatei wäre oder ein Sammelsurium aus zusammenkopierten Inhalten in einer inkonformen HtmlDatei?

                                  Zum parsen von HTML gibt es HTML-Parser. Versuche es nicht mit Regexen, das ist noch problematischer als die Verwendung von Regexen für das parsen von XML! 😉 Den via HTML-Parser aus der HTML-Datei extrahierten Text kannst du dann natürlich wieder mit Regexen bearbeiten, da spricht nichts gegen.

                                  So ganz prinzipiell spricht nichts gegen die Verwendung von Regexen zum parsen von einfachen Text-Strukturen. Man muss sich halt nur über die Grenzen im klaren sein.

                                  LG,
                                  CK

                                  -- https://wwwtech.de/about

                                  Folgende Nachrichten verweisen auf diesen Beitrag:

                                  1. Hallo Christian,

                                    hat sich in den letzten Jahren soviel verändert, dass der Gebrauch von Regex in so einem Fall schon einer Todsünde gleich kommt?

                                    You don't get it. Nicht der Gebrauch von Regexen ist eine Todsünde, sondern der Gebrauch von Regexen zum parsen von HTML oder XML. Das schrieb ich aber auch ganz ausdrücklich, du hast es selber zitiert.

                                    So meinte ich es ja auch. Dennoch, wenn ich mir hier so einige ältere Threads zu dem Thema anschaue, da war kein so großer Aufschrei, nein oft wurde sogar noch an den Regex mitgewirkt.

                                    https://forum.selfhtml.org/self/2009/jul/28/zeit-aus-xml-feed-aendern/1383256#m1383256

                                    https://forum.selfhtml.org/self/2011/mar/9/regexp-hilfe/1498470#m1498470

                                    Nur weil viele Leute das Problem auf die gleiche Weise angingen heisst das nicht, dass es die richtige Methode war.

                                    So ganz prinzipiell spricht nichts gegen die Verwendung von Regexen zum parsen von einfachen Text-Strukturen. Man muss sich halt nur über die Grenzen im klaren sein.

                                    Also doch, puhhh fürchtete schon für alles gibt's heute fertige Parser und ich kenn sie nur noch nicht 😉

                                    Gruss
                                    Henry

                                    1. Hallo @Henry,

                                      So meinte ich es ja auch. Dennoch, wenn ich mir hier so einige ältere Threads zu dem Thema anschaue, da war kein so großer Aufschrei, nein oft wurde sogar noch an den Regex mitgewirkt.

                                      https://forum.selfhtml.org/self/2009/jul/28/zeit-aus-xml-feed-aendern/1383256#m1383256

                                      https://forum.selfhtml.org/self/2011/mar/9/regexp-hilfe/1498470#m1498470

                                      da gab es auch keinen Aufschrei, denn dort wurde nicht XML oder HTML mit Regexen geparst, sondern es passierte in etwa das, was Christian schrieb:

                                      Den via HTML-Parser aus der HTML-Datei extrahierten Text kannst du dann natürlich wieder mit Regexen bearbeiten, da spricht nichts gegen.

                                      Viele Grüße
                                      Robert

                                    2. hi,

                                      Also doch, puhhh fürchtete schon für alles gibt's heute fertige Parser und ich kenn sie nur noch nicht 😉

                                      Hier wird zuviel in Schubladen gedacht. MfG

                                    3. Hallo

                                      So meinte ich es ja auch. Dennoch, wenn ich mir hier so einige ältere Threads zu dem Thema anschaue, da war kein so großer Aufschrei, nein oft wurde sogar noch an den Regex mitgewirkt.

                                      https://forum.selfhtml.org/self/2009/jul/28/zeit-aus-xml-feed-aendern/1383256#m1383256

                                      Dort ging es nicht darum, XML zu parsen, sondern darum, Zeitwerte, die in einem XML-Dokument enthalten waren/sind, umzurechnen. Dass der OP sein XML bereits mit Regexen „durchforstet“ hat, war nur eine Zusatzinfo seinerseits.

                                      https://forum.selfhtml.org/self/2011/mar/9/regexp-hilfe/1498470#m1498470

                                      Definiere Aufschrei! Den Hinweis zum parsen von XML einen XML-Parser zu verwenden, gab es dort sehr wohl. Nicht von jedem, nicht immer wieder, aber auch nicht einmal eine Stunde nach der Eröffnung des Threads und nicht als dessen letzter Beitrag. Damit meiner Meinung nach auch zeitnah genug, dass der OP dessen gewahr hat werden können.

                                      Wieviele Threads hast du bei deiner Suche eigentlich gefunden, in denen der Einsatz eines XML-Parsers empfohlen wurde?

                                      Tschö, Auge

                                      -- Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
                                      Toller Dampf voraus von Terry Pratchett
                                  2. problematische Seite

                                    Hallo Christian,

                                    Zum parsen von HTML gibt es HTML-Parser. Versuche es nicht mit Regexen, das ist noch problematischer als die Verwendung von Regexen für das parsen von XML! 😉 Den via HTML-Parser aus der HTML-Datei extrahierten Text kannst du dann natürlich wieder mit Regexen bearbeiten, da spricht nichts gegen.

                                    hmmm. HtmlParser habe ich noch nie genutzt.

                                    Aufgrund der Anregungen hier möchte ich jetzt einige alte Scripte von mir der Gegenwart anpassen. Tut mir zwar ein wenig in der Seele weh, weil viel Arbeit und Herzblut... aber was solls, wenn es nicht mehr zeitgemäß ist, muss ich halt meine Arbeitsweise anpassen.

                                    So dachte ich zunächst, müsste ja ein leichtes sein das schnell mal von String/Regex auf Parser anzupassen. Leider tue ich mich aber verdammt schwer und könnte Hilfe gebrauchen.

                                    Beispiel: Für Recherchearbeiten nutze ich oft Auszüge aus Wikipedia, so hab ich mir im Laufe der Zeit schon eine Art eigenes Wikipedia aus den dortigen Daten angelegt. Wie bin ich da vor gegangen? Ziemlich einfach: Datei anfordern mit zb. file_get_contents, Merkmale/Strukturen/Elemente (meist durch Stringbefehle) raussuchen, die ich benötige, dann noch ein wenig Kosmetik, wie zb. strip_tags usw. Das hat natürlich den Nachteil, dass ich für verschiedene Kategorien auch verschiedene Parsetemplates bauen musste, so sind Biografien zb. anders gegliedert als naturwissenschaftliche Themen. Aber funktioniert soweit.

                                    Nun versuche ich es über DOM-Parsing. Hmmm... gar nicht intuitiv und trivial wie erhofft. Beispiel:

                                    $fl = 'https://de.wikipedia.org/wiki/Lex_Barker'; $doc = new DOMDocument(); $doc->loadHTMLFile($fl); $result = $doc->saveHTML(); print_r($result);

                                    Das sollte doch jetzt eigentlich soweit funktionieren, dass ich zb. mit echo "Ausgabe: $doc->getElementById('Leben')->tagName das Element mit der ID "Leben" anzeigen/ansprechen kann. Aber vermutlich hab ich da was falsch verstanden. Bevor ich jetzt einen Roman draus mache, bin ich bis hier schon mal auf der richtigen Fährte?

                                    Gruss
                                    Henry

                                    1. problematische Seite

                                      Tach!

                                      Das sollte doch jetzt eigentlich soweit funktionieren, dass ich zb. mit echo "Ausgabe: $doc->getElementById('Leben')->tagName das Element mit der ID "Leben" anzeigen/ansprechen kann.

                                      Tut es bei mir auch, also wenn ich es mit richtiger Syntax ausführen lassen, sprich: {}-Klammern um komplexe Ausdrücke innerhalb von ""-Strings, oder Stringverknüpfung statt Einbettung.

                                      dedlfix.

                                      1. problematische Seite

                                        Hallo dedlfix,

                                        Tut es bei mir auch, also wenn ich es mit richtiger Syntax ausführen lassen, sprich: {}-Klammern um komplexe Ausdrücke innerhalb von ""-Strings, oder Stringverknüpfung statt Einbettung.

                                        Versteh ich nicht. Soll ich den Content vorher formatieren?

                                        Gruss
                                        Henry

                                        1. problematische Seite

                                          Tach!

                                          Tut es bei mir auch, also wenn ich es mit richtiger Syntax ausführen lassen, sprich: {}-Klammern um komplexe Ausdrücke innerhalb von ""-Strings, oder Stringverknüpfung statt Einbettung.

                                          Versteh ich nicht. Soll ich den Content vorher formatieren?

                                          Nein, ich meinte PHP-Syntax. Mit anderen Worten, du scheinst da was falsch zu machen, was ich aber nicht zweifelsfrei erkennen kann ohne den konkreten Code.

                                          dedlfix.

                                          1. problematische Seite

                                            Hallo dedlfix,

                                            Nein, ich meinte PHP-Syntax. Mit anderen Worten, du scheinst da was falsch zu machen, was ich aber nicht zweifelsfrei erkennen kann ohne den konkreten Code.

                                            Hatte ich ja schon in etwa gepostet.

                                            $fl = file_get_contents('https://de.wikipedia.org/wiki/Lex_Barker'); $doc = new DomDocument; $doc->validateOnParse = true; $doc->loadHTMLFile($fl, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); echo $doc->getElementById('Leben')->tagName; //zur Kontrolle print_r($doc);

                                            Jetzt würde ich erwarten da kommt ein Bezugswert oder sonstwas, aber stattdessen:

                                            Warning: DOMDocument::loadHTMLFile(): I/O warning : failed to load external entity …

                                            und

                                            Notice: Trying to get property of non-object in ...

                                            Gruss
                                            Henry

                                            1. problematische Seite

                                              ohhh man...

                                              $fl = file_get_contents('https://de.wikipedia.org/wiki/Lex_Barker');

                                              natürlich quatsch(wald vor Bäumen), sondern so: $fl = 'https://de.wikipedia.org/wiki/Lex_Barker';

                                              und siehe da, dann geht's auch. So wie geh ich jetzt weiter vor? Ich muss ja jetzt den Inhalt haben und zwar nicht nur von dem span. Klar könnt ich jetzt wieder in den alten Trott verfallen, aber ich will ja versuchen soviel als möglich direkt mit diesem Parser zu bewerkstelligen. hmmm. ich probier mal weiter

                                              Gruss
                                              Henry

                                              1. problematische Seite

                                                Hallo,

                                                ich tue mich echt schwer damit. Ich finde auch leider kein geeignetes Tutorial, was einem vor allem die Basics näher bringt oder Beispiele, die nachvollziehbar sind. Selbst PHP-Manual ist ja sonst sehr gut, aber in dem Fall, zu viel vermischt und nicht klar.

                                                Versucht habe ich mich, ähnlich wie Javascript, durch den Dokumentenbaum zu hangeln. Scheitert aber bereits daran, dass ich irgendwie getElementsByTagName nicht nutzen kann.

                                                Das ist soweit OK

                                                $fl = 'https://de.wikipedia.org/wiki/Lex_Barker'; $doc = new DomDocument; $doc->validateOnParse = true; #$dom->preserveWhiteSpace = false; $doc->loadHTMLFile($fl, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);

                                                Das hier geht aber leider in keiner Form:

                                                $headlines = $dom->getElementsByTagName('h3')[2]; echo $headlines[2]; $headlines = $dom->getElementsByTagName('h3'); echo $headlines; $headlines = $dom->getElementsByTagName('h3')[2]; echo $headlines.innerText;

                                                kommt sowas wie zb. Call to a member function getElementsByTagName() on a non-object

                                                Weiter bin ich daher bisher nur mit langen Testketten gekommen, die zwar das gewünschte liefern aber natürlich in der Realnutzung keinen Sinn machen.

                                                $startx = $doc->getElementById('Leben')->parentNode->nextSibling->nextSibling->nextSibling->nextSibling; // inkl. html tags mit c14n #echo $startx->C14N(); // nur text echo $startx->textContent;

                                                Dabei ist die Struktur klar. Von id=Leben ausgehend das Elternelement finden und dann je nach Bedarf entweder alle Überschriften in <h3> Form oder den folgenden Kontext <p> finden und nutzen. Komme aber nicht weiter solange ich keine Schleifen einsetzen kann und dafür müsste ich eben getElementsByTagName nutzen können(sofern das überhaupt der richtige Weg wäre?). Nur was mache ich da falsch?

                                                Gruss
                                                Henry

                                                1. problematische Seite

                                                  Tach!

                                                  kommt sowas wie zb. Call to a member function getElementsByTagName() on a non-object

                                                  Schalte zum Entwickeln immer das error_reporting auf E_ALL. Du greifst auf eine Variable zu, die nicht existiert. E_ALL würde Notice-Fehlermeldungen nicht unterdrücken, die dich darauf hinweisen. $doc ist jedenfalls nicht $dom.

                                                  dedlfix.

                                                  1. problematische Seite

                                                    Hallo dedlfix,

                                                    Schalte zum Entwickeln immer das error_reporting auf E_ALL. Du greifst auf eine Variable zu, die nicht existiert. E_ALL würde Notice-Fehlermeldungen nicht unterdrücken, die dich darauf hinweisen. $doc ist jedenfalls nicht $dom.

                                                    oje, hat er auch gezeigt(immer E_ALL) nur übersehen. Aber ändert leider nichts. Wenn ich das versuche...

                                                    $headlines = $doc->getElementsByTagName('h3'); foreach ($headlines as $hl) { echo $hl->innerText; }

                                                    ... kommen nur einige Errornotices:

                                                    Notice: Undefined property: DOMElement::$innerText in....

                                                    Gruss
                                                    Henry

                                                    1. problematische Seite

                                                      Hallo

                                                      Wenn ich das versuche...

                                                      $headlines = $doc->getElementsByTagName('h3'); foreach ($headlines as $hl) { echo $hl->innerText; }

                                                      ... kommen nur einige Errornotices:

                                                      Notice: Undefined property: DOMElement::$innerText in....

                                                      Das deckt sich mit meiner Suche in der PHP-Doku. Ich finde dort kein innerText, was sich mit der Meldung „Undefined property“ deckt. Stattdessen finde ich, z.B. auf der Dokuseite zu getElementsByTagName in den Beispielen die Verwendung von nodeValue.

                                                      Tschö, Auge

                                                      -- Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
                                                      Toller Dampf voraus von Terry Pratchett
                                                    2. problematische Seite

                                                      Tach!

                                                      Notice: Undefined property: DOMElement::$innerText in....

                                                      Die Eigenschaft, die du suchst, heißt textContent. DOMElement erbt sie von DOMNode.

                                                      dedlfix.

                                                      1. problematische Seite

                                                        Hallo dedlfix,

                                                        also eine vergessene Tretmine aus den Browserkriegen. Die innerText Eigenschaft war eine Internet Explorer Erweiterung, und textContent kommt von Chrome/Firefox.

                                                        Blöd an der PHP Doku finde ich hier, dass DOMElement zwar geerbte Methoden auflistet, aber keine geerbten Eigenschaften.

                                                        Rolf

                                                        -- sumpsi - posui - clusi
                                                      2. problematische Seite

                                                        Hallo dedlfix,

                                                        Die Eigenschaft, die du suchst, heißt textContent. DOMElement erbt sie von DOMNode.

                                                        oh man, was mache ich hier, viel zu lange schon wach 😉 Dank dir für dein Geduld. Klar. textContent, hatte ich ja auch schon ein paar mal hier geschrieben, nur leider beim experimentieren(probier zwischendruch JavaScript darauf) kommts durcheinander.Sry.

                                                        Und das klappt soweit: echo $hl->textContent; Ist zwar noch ein weiter Weg aber dr nächste Schritt war jetzt zu versuchen das auszuweiten. echo $hl->nextSibling->textContent; Doch muss wohl auch anders, denn das klappt nicht. Aber falls mir das dann irgendwann gelingt, auf den Bereich ab id=leben begrenzen, denn jetzt ist natürlich das ganze Dokument angesprochen.

                                                        Gruss
                                                        Henry

                                                        1. problematische Seite

                                                          Tach!

                                                          dr nächste Schritt war jetzt zu versuchen das auszuweiten. echo $hl->nextSibling->textContent; Doch muss wohl auch anders, denn das klappt nicht.

                                                          Das kann daran liegen, dass das nächste Geschwister etwas anderes ist, als du dir vorstellst, beispielsweise ein Textnode, der nur Whitespace enthält. Das siehst du mit echo nicht, aber var_dump() könnte aufgrund der Längenangabe und dem Abstand zwischen den Anführungszeichen darauf hindeuten. Auch nextSibling mit var_dump() zu untersuchen kann Aufschluss bringen.

                                                          Wann immer irgendwas nicht will, erstmal var_dump() draufjagen, um Klarheit oder Erkenntnisse zu sammeln.

                                                          dedlfix.

                                                          1. problematische Seite

                                                            Hallo dedlfix,

                                                            Wann immer irgendwas nicht will, erstmal var_dump() draufjagen, um Klarheit oder Erkenntnisse zu sammeln.

                                                            nutze dafür meist print_r(), dürfte aber keinen großen Unterschied machen? Bin jetzt aber nicht sicher wovon ein dump.. Na ja gibt mir auf jeden Fall die Anzahl der nodes aus den h3 tags, beim gesamten quelltext, klar da sind whitespace drin und dein hinweis das bei nextSibling zu probieren, zeigt schon etwas:

                                                            Catchable fatal error: Object of class DOMText could not be converted to string

                                                            Dachte eigentlich so was würde mir der Parser abnehmen, tut er auch bestimmt nur wie?

                                                            Gruss
                                                            Henry

                                                            1. problematische Seite

                                                              Tach!

                                                              Wann immer irgendwas nicht will, erstmal var_dump() draufjagen, um Klarheit oder Erkenntnisse zu sammeln.

                                                              nutze dafür meist print_r(), dürfte aber keinen großen Unterschied machen?

                                                              print_r() ist für Arrays und Objekte gedacht und ergibt eine einfache, dafür aber etwas übersichtlichere Ausgabe. var_dump() hingegen ist genauer, das gibt zu jeder Variable den Typ und Zusatzinformationen, wie die Länge von Strings aus. Bei einem print_r() oder echo sieht man bei Whitespace nichts weiter, bei var_dump() hingegen Anführungszeichen um den String und dann auch den verbrauchten Platz zwischen ihnen, nebst der Länge in Bytes.

                                                              Bin jetzt aber nicht sicher wovon ein dump..

                                                              Von dem Ding, das du auszugeben gedenkst, und bei Objekt-Verkettungen die Kette hinauf zum Ursprung. Denn wenn beispielsweise irgendeine Eigenschaft nicht da ist, dann ist vielleicht am Elternteil was anders als erwartet.

                                                              Na ja gibt mir auf jeden Fall die Anzahl der nodes aus den h3 tags, beim gesamten quelltext, klar da sind whitespace drin und dein hinweis das bei nextSibling zu probieren, zeigt schon etwas:

                                                              Catchable fatal error: Object of class DOMText could not be converted to string

                                                              Dachte eigentlich so was würde mir der Parser abnehmen, tut er auch bestimmt nur wie?

                                                              Ganz genau kenne ich mich mit den DOM-Klassen auch nicht aus. Ich würde aber auf die Siche gehen, ob es irgendeine Option dafür gibt. Erste Station: Constructor → keine entsprechende Parameter. Irgendeine Methode zum Setzen von Optionen? Sieht nicht so aus. DOMDocument hat aber $preserveWhiteSpace. Das kann man mal probieren. Das Handbuch sagt aber nicht, wann das auf welchen Vorgang wirkt. Vielleicht beim Einlesen, vielleicht beim Speichern und erneutem Einlesen? Also auch mal Google dazu befragen. Weiterhin gibt es von DOMNode geerbt ein normalize(), dessen Beschreibung so klingt, als ob das was brauchbares tut. Außerdem gibts da noch was mit C14N im Namen (=Canonicalization), was auch so klingt, als ob es was damit zu tun haben könnte.

                                                              Das wären so die nächsten Schritte, die ich probieren würde, um die Textnodes wegzubekommen. Anderenfalls muss man sie eben beim Verarbeiten mit geeigneten if-else-Konstrukten überspringen.

                                                              dedlfix.

                                                              1. problematische Seite

                                                                Hallo,

                                                                whitespace … Textnodes …

                                                                bei meinem Javascript-GPX-Parser werden (zwar aus Performancegründen) die Umbrüche zwischen den Tags noch im String per replace entfernt.

                                                                Gruß
                                                                Jürgen

                                2. problematische Seite

                                  Rexn erkennen nicht die Struktur. Wie Jürgen B sinngemäß schon schrieb, mit Rexn ein Array mit Trackpoints aus einer Datei zu fischen ist kein Problem, aber es kann eines werden wenn es über den Arrays eine Zuordnung gibt. Also mehrere Arrays von Trackpoints.

                                  Genau deswegen braucht man einen Parser der imstande ist, die übergeordnete Struktur zu erkennen. Sprich die im DOM beabsichtigte Zuordnung der Kindelementen zu ihren Elternelementen.

                                  Was wäre das dann für ein Tool, wenn zb. die vorliegende Datei jetzt nur eine simple Textdatei

                                  Ach freilich kann man Datenstrukturen auch anders einfrieren. Man muss sich dabei nur über den Algorithmus einigen damit man die Daten wiederherstellen kann. Man kann lat="53.188185" lon="7.216993" sogar auf jeweils genau 4 Bytes abbilden und wenn es nicht mehr als 255 Touren in einer Datei sind reicht sogar ein Byte für die Tour~ID 😉

                                  MfG

                                3. problematische Seite

                                  Tach!

                                  hat sich in den letzten Jahren soviel verändert, dass der Gebrauch von Regex in so einem Fall schon einer Todsünde gleich kommt? Offensichtlich. Ich kann mich noch gut an die Zeit erinnern, als PHP noch keine brauchbaren XML-Parser mitbrachte und überall im Netz allerlei Scripte auf rege Nachfrage stießen, die das Problem ebenso mit Stringfunktionen und/oder Regex angingen.

                                  Auch damals war das kein passendes Werkzeug sondern ein Notbehelf. Aber auch in Zeiten von PHP4 gab es XML-Werkzeuge, nur nicht so ein einfaches wie SimpleXML (erst ab PHP 5). Zeiten ändern sich, und Nostalgie ist nicht unbedingt ein guter Ratgeber für die Gegenwart.

                                  War ja auch eigentlich kein großes Ding, denn letztendlich bleibts ja doch nur ne simple Textdatei mit einer Struktur die es zu erkennen gilt.

                                  Ja. Nein. Eine Textdatei ist nur dann simpel, wenn sie ziemlich starren Regeln folgt. XML, das noch dazu aus verschiedenen Quellen kommen kann, hat diese starre Struktur nicht, sondern hat die Flexibilität, die die Syntaxregeln von XML erlauben. "Tracking-Dateien zum Runterladen" hieß es im OP. Da ist also nicht zwangsläufig garantiert, dass die alle exakt gleich aufgebaut sind - aus Sicht einer Text-Datei. Jedoch aus der Sicht von XML. Einen Regexp zu nehmen, ist nicht flexibel, sondern einschränkend. Oder zu komplex, wenn er mehrere Regeln verarbeiten können soll.

                                  Es ist keine Todsünde, das hat niemand behauptet. (Ich mag es nicht, wenn solche Dramtik in die Diskussion gebracht wird und sie damit unnötig zugespitzt wird.) Es ist nur mit deutlichen Nachteilen verbunden, die man auf den ersten Blick nicht so einfach erkennt. "Ist ja nur Text, was kann da schon schiefgehen?"

                                  Daher tue ich mich verständlicherweise schwer das Ganze als so problematisch anzusehen, wenn das was vorher gut war auf einmal extrem schlecht sein soll.

                                  Da muss man schon ganz schön die Augen schließen, um die Argumente nicht wahrzunehmen, dass XML kein simples Textformat ist, sondern in vielen Variationen daherkommen kann, die man alle in der RegExp-Regel berücksichtigen müsste.

                                  Was wäre das dann für ein Tool, wenn zb. die vorliegende Datei jetzt nur eine simple Textdatei wäre oder ein Sammelsurium aus zusammenkopierten Inhalten in einer inkonformen HtmlDatei?

                                  Da "simple Textdatei" keine eindeutige Definition ist, kann man die Frage nicht (eindeutig) beantworten. Da gibt es zu viele Unbekannte und Wenns und Abers, die alle die Richtung beeinflussen, in der man die Lösung für das Problem suchen sollte. CSV beispielsweise ist ein "simples Textformat", für das die Empfehlung aber auch nicht RegExp, sondern CSV-Reader heißt. Die Simplizität fängt nämlich dann an aufzuhören, wenn Ausnahmen auftreten wie Zeilenumbrüche und Begrenzungszeichen in den Daten oder Escape-Sequenzen.

                                  Ein "Sammelsurium aus zusammenkopierten Inhalten" stelle ich mir auch alles andere als simpel vor. Für "inkonforme HtmlDateien" hingegen gibt es jedenfalls Parser, die das zu lesen versuchen, zum Beispiel DOMDocument::loadHTML. Es hängt weiterhin vom Anwendungsfall ab, und vor allem, ob die Struktur garantiert feststehend ist oder doch flexibel, aber einer Syntax folgend.

                                  Generell kann ich nur soweit antworten: Wenn es für das Format einen Parser gibt, nutze ihn. Für alles andere muss man individuell entscheiden.

                                  dedlfix.

                            2. problematische Seite

                              @@Henry

                              grrr... alles nochmal neu schreiben weil aus Versehen auf zurück (nicht das erste Mal).

                              Autsch, das ist ärgerlich. Passiert mir auch hin und wieder – im Safari auf dem iPhone.

                              Allerdings: in meinem Firefox auf dem Mac überlebt die Eingabe einen Spaziergang durch die Browser-History; sogar mal einen Browser-Neustart. Wieder im Vorposting angekommen, nochmal auf „antworten“ gedrückt – und die Eingabefelder sind mit dem zuvor getätigten Entwurf vorausgefüllt.

                              Gerade eben wieder: Ich hatte einen Tab mit der Lösung zur Mathematik zum Wochenanfang offen. Nach Neustart war nur die Aufgabe zu sehen, meine schon zum Abschicken fertiggemachte Lösung war weg. Auf „antworten“ gedrückt – alles wieder da.

                              Mal Frage/Bitte an die Admins hier, wäre eine automatische Speicherung auf Web-Storage Basis irgendwann denkbar?

                              Auf meiner Wunschliste steht „als Entwurf speichern“ (ohne das Posting schon für andere sichtbar werden zu lassen). @Christian Kruse?

                              LLAP 🖖

                              -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                              1. Hallo Gunnar,

                                bitte lass das mit den Mentions. Ich finde das sehr aufdringlich. Ich hatte das Posting gelesen (ich hatte ja sogar darauf geantwortet!) und mich entschlossen, nicht darauf einzugehen. Bitte respektiere das.

                                Ich arbeite an der V5 des Forums, für V4 besteht ein Feature freeze. Ich mache nur ein paar notwendige Maintenance-Arbeiten.

                                LG,
                                CK

                                -- https://wwwtech.de/about
                            3. problematische Seite

                              @@Henry

                              Was soll das hier? Ich sagte doch schon Anpassungen sollte eigentlich jemand vornehmen, der mehr Übung in Sachen regex hat.

                              Ich sagte doch schon – und andere auch: jemand, der mehr Übung in Sachen regex hat, weiß von Vornherein, dass reguläre Ausdrücke (bzw. deren Erweiterungen) nicht geeignet sind, XML zu parsen.

                              Wenn du das nicht wahrhaben willst, bist du derjenige, der das Gegenteil zu zeigen hat.

                              Warum kommst du immer wieder mit neuen Ausnahmen

                              Ich komme nicht mit „Ausnahmen“. Ich sagte von Anfang an: Ein verarbeitendendes Programm muss bei all diesen Schreibweisen [die XML erlaubt] dasselbe Ergebnis liefern.

                              obwohl du weisst, dass diese relativ leicht einzubauen sind.

                              Im Gegenteil: Ich weiß, dass das nicht einfach ist. Eher unmöglich.

                              Na ja, wenn Du dir zu fein bist das selbst anzupassen <trkpt.*=*"(.*)".*"(.*)".*>

                              Wie war das jetzt mit der Reihenfolge der Attribute? Du hast immer noch nicht mal alles drin, was bisher schon gesagt wurde.

                              Übrigens, wenn du dort siehst wie ich deinen Kram dort reingemüllt habe, wüsste ich gern wie ein Parser damit zurecht käme, was ich ja im Gegenzug als Ausnahmefall anprangern könnte, eben was wenn es kein XML ist oder die XML Datei falsch aufgebaut...

                              Wie es in der Spec geschrieben steht: “Once a fatal error is detected, however, the processor MUST NOT continue normal processing (i.e., it MUST NOT continue to pass character data and information about the document's logical structure to the application in the normal way).”

                              Nein, du bist am Zug. Du hast noch keinen Ausdruck gezeigt, der die bisher schon vorgebrachten Schreibweisen abdeckt.

                              Neee bestimmt nicht... Ein klares Beispiel ohne Wenn und Aber. Nicht immer wieder Ausnahmen zusammenpflücken und daraus ein Ping-Pong Match machen.

                              Ich komme nicht mit „Ausnahmen“ …

                              Ich habe dir ein Spiel mit klaren Regeln angeboten. Du kannst die Herausvorderung annehmen oder ablehnen, aber nicht die Regeln ändern; das wäre ja dann ein anderes Spiel.

                              LLAP 🖖

                              -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                              1. problematische Seite

                                Hallo,

                                bei der vorliegenden XML-Datei handelt es sich um eine gpx-Datei. Im gpx werden Trackpunkte in Tracksegmenten und diese in Tracks gebündelt. Es reicht daher nicht, einfach nur nach <trkpt …> zu suchen, man muss sie auch wenigstens ihrem Track zuordnen.

                                Auch sollte man die Performance nicht aus den Augen verlieren. Tracks können schon mal einige 10.000 Punkte enthalten.

                                Gruß
                                Jürgen

                              2. problematische Seite

                                @@Gunnar Bittersmann

                                Na ja, wenn Du dir zu fein bist das selbst anzupassen <trkpt.*=*"(.*)".*"(.*)".*>

                                Wie war das jetzt mit der Reihenfolge der Attribute? Du hast immer noch nicht mal alles drin, was bisher schon gesagt wurde.

                                Hm, da kommt nichts mehr? Du bist von Regex abgekommen? Das ist gut.

                                Und das ist schade. Kann ich dir gar nicht mit
                                <trkpt lat="53.188185" foo='"' bar='"' lon="7.216993"></trkpt>
                                oder
                                <trkpt lat="53.188185" foo="" bar=">" lon="7.216993"></trkpt>
                                den Todesstoß versetzen‽ 😡😉

                                LLAP 🖖

                                -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                                1. problematische Seite

                                  Hallo Gunnar,

                                  … Kann ich dir gar nicht mit
                                  <trkpt lat="53.188185" foo='"' bar='"' lon="7.216993"></trkpt>
                                  oder
                                  <trkpt lat="53.188185" foo="" bar=">" lon="7.216993"></trkpt>
                                  den Todesstoß versetzen‽ 😡😉

                                  damit hättest du aber dem Dokument auch den Todesstoß versetzt. Der Platzhirsch bei Consumer-GPSen hätte die Annahme kommentarlos verweigert. Wahrscheinlich basiert deren Parser auf RegExen.😉

                                  Gruß
                                  Jürgen

                                2. problematische Seite

                                  Hallo Gunnar,

                                  Hm, da kommt nichts mehr? Du bist von Regex abgekommen? Das ist gut.

                                  weil ein ping-Pong Spiel ja nichts bringt.

                                  Und das ist schade. Kann ich dir gar nicht mit
                                  <trkpt lat="53.188185" foo='"' bar='"' lon="7.216993"></trkpt>
                                  oder
                                  <trkpt lat="53.188185" foo="" bar=">" lon="7.216993"></trkpt>
                                  den Todesstoß versetzen‽ 😡😉

                                  Na dann...Moriturus te salutat

                                  Aber ob das wirklich tödlich wäre... Hätte mehr Kreativität erwartet. Solange die Bezeichner lat und lon sind, was willst du da großartig verkomplizieren? Änderst du allerdings die, hätte auch ein Parser Probleme, wobei er die jetzt wahrscheinlich schon bei dem Müllberg im Regextester hätte.

                                  Naja, zum letzten Mal und nur für dich 😉, sagt dir Lazarus jetzt:

                                  .*(?:lat).*=.*(?:"|')(.*)(?:"|')\D.*(?:lon).*=.*(?:"|')(.*)(?:"|')\D

                                  Ach ja zum Testen, Hier

                                  Henry

                                  1. problematische Seite

                                    Hallo @Henry,

                                    Naja, zum letzten Mal und nur für dich 😉, sagt dir Lazarus jetzt:

                                    .*(?:lat).*=.*(?:"|')(.*)(?:"|')\D.*(?:lon).*=.*(?:"|')(.*)(?:"|')\D

                                    Haben wir eigentlich schon über so Dinge wie &#x32;&#x35; geredet?

                                    Viele Grüße
                                    Robert

                                  2. problematische Seite

                                    @@Henry

                                    Naja, zum letzten Mal und nur für dich 😉, sagt dir Lazarus jetzt:

                                    .*(?:lat).*=.*(?:"|')(.*)(?:"|')\D.*(?:lon).*=.*(?:"|')(.*)(?:"|')\D

                                    Der Ausdruck findet in <trkpt latte-macchiato="lecker" lat="53.188185" lon="7.216993"></trkpt> „lecker“, nicht 53.188185. Soll das so?

                                    Um das = willst du nicht irgendwelche Zeichen (.*) stehen haben, sondern (optionalen) Whitespace (\s*).

                                    Und vor (?:lat) ebenfalls Whitespace (\s+), sonst gibt’s bei <trkpt caffe-lat="lecker" lat="53.188185" lon="7.216993"></trkpt> auch „lecker“.

                                    (?:"|')(.*)(?:"|') für Attributwerte ist auch keine gute Idee; bei "it's cold outside" siehst du es: „it“, nicht den ganzen Attributwert.

                                    Wenn schon, dann sowas wie (?:"([^"]*)"|'([^']*)').

                                    Und ehe wir jetzt noch weitere 1001 Fälle berücksichtigen, sehen wir lieber alle ein, dass reguläre Ausdrücke zum Parsen von XML so eher wenig geeignet sind. Eher gar nicht.

                                    LLAP 🖖

                                    -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                        2. problematische Seite

                          Hallo @Henry,

                          Ach, und wie macht ein XML-Parser das? Sind die internen Routinen nicht gleich basierend?

                          ein ganz simpler XML-Parser wird ohne reguläre Ausdrücke auskommen können, das gibt die formale Definition nämlich her. Übungsaufgabe: Schreibe einen simplen XML-Parser 😉

                          Viele Grüße
                          Robert

                2. problematische Seite

                  Lieber Henry, ich verstehe Dich in diesem Punkt nicht. Gegeben sind explizit XML-Daten (welche zugegenermaßen fälschlicherweise als Text-Datei bezeichnet wird). Gegeben ist ferner die Möglichkeit, diese XML-Datei mit der Programmiersprache PHP zu verarbeiten. Für niemanden, der die beste Vorgehensweise in diesem Fall nicht kennt, Laien also, ist der Ratschlag, diese Datei anhand regulärer Ausdrücke, die durchaus auch noch falsch sein können, zu parsen, der eindeutig falsche Weg. Da ist auch kein Lerneffekt oder ähnliches vorhanden. Im schlimmsten Fall nutzt der User deinen Code -sogar scheinbar erfolgreich- ohne groß über die Gegebenheiten nachzudenken, und lernt so dauerhaft die falsche Vorgehensweise. So gesehen in allerhand Legacy-Quellcode.

                  Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.

                  (Jamie Zawinski)

                  1. problematische Seite

                    Hallo Gleiter,

                    hast du dir hier alles durchgelesen? Weil... irgendwie passt das jetzt nicht mehr ganz.

                    ps. zu deinem Zitat

                    Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.

                    (Jamie Zawinski)

                    schreiben andere auch lustige Sachen:

                    Jamie Zawinski, also known simply as jwz, is famous for his quote: “Some people, when confronted with a problem, think ‘I know, I’ll use regular expressions.’ Now they have two problems.” It’s a very amusing line, and I can totally see why people all over the world are using it in their .sig files: It makes them feel better about not being able to understand regexes. And it looks more erudite than just saying, “Some dude who used to work for Netscape thinks they’re a bad idea, so I don’t have to worry about the difference between \w and \S.”

                    Gruss
                    Henry

                    1. problematische Seite

                      Hallo Henry, sorry, hatte tatsächlich des Nächtens nicht mehr alles gelesen. Zum Zitat: stimmt schon, die Aussage ist etwas überspitzt. Trotzdem liegt in ihr viel Wahrheit. Das kann ich als jemand, der über 10 Jahre mit Regexen (PCRE) zu tun hatte, leider bestätigen. Im vorliegenden Fall konnte ich mir das Zitat also nicht verkneifen, nichts für ungut.

                  2. problematische Seite

                    Hallo,

                    … XML-Daten (welche zugegenermaßen fälschlicherweise als Text-Datei bezeichnet wird). …

                    was ist daran falsch? Für mich sind xml-Daten erst mal nur Strings, die man auch mit Stringmethoden bearbeiten kann. Erst durch die Interpretation werden daraus xml-Daten. Wenn man dann aber weiß, das es sich um xml-Daten, oder im vorliegenden Fall um GPX-Daten handelt, sollte man auch - wenn vorhanden - die entsprechenden Methoden verwenden.

                    Gruß
                    Jürgen

                    1. problematische Seite

                      Tach!

                      … XML-Daten (welche zugegenermaßen fälschlicherweise als Text-Datei bezeichnet wird). …

                      was ist daran falsch?

                      Das ist nicht direkt falsch, aber für das gewünschte Zeil nicht besonders hilfreich. Wenn man garantieren kann, dass das Format aus Textsicht immer dasselbe ist, dann mag das noch gehen (bis zur ersten übersehenen Ausnahme), aber wenn alle Möglichkeiten des XML-Formats von den Datenerzeugern genutzt werden, dann ist eine andere als die Betrachtungsweise als XML nicht mehr sehr effektiv und vom Entwicklungauswand her auch nicht sehr effizient.

                      dedlfix.

                      1. problematische Seite

                        Hallo dedlfix,

                        da sind wir ja einer Meinung.

                        Ich wollte nur darauf hinweisen, das XML bzw. GPX auch nur Textdateien sind, die man sich im ASCII-Editor ansehen kann.

                        Viele Anwender von GPS-Geräten wissen das nicht. Ich bekomme oft GPX-Dateien zugesandt, die nicht „funktionieren“. Da die Fehlermeldungen der GPS-Programme kaum mehr als „geht nicht“ melden, sehe ich mir die Datei im Editor an und finde meistens schnell den Fehler.

                        Gruß
                        Jürgen

                        1. problematische Seite

                          Hi,

                          Ich bekomme oft GPX-Dateien zugesandt, die nicht „funktionieren“.

                          Sind die Dateien von Hand erstellt?

                          MfG

                          1. problematische Seite

                            Hallo,

                            Ich bekomme oft GPX-Dateien zugesandt, die nicht „funktionieren“.

                            Sind die Dateien von Hand erstellt?

                            nein. Oft fehlen Teile in der Mitte oder am Ende, weil der GPS-Empfänger ausgefallen ist. Gründe sind z.B. Akku leer oder Wackelkontakt in der Stromversorgung. Am Lenker eines Rennrads oder beim Felsenklettern werden die Geräte schon hart rangenommen.

                            Gruß
                            Jürgen

                            1. problematische Seite

                              nein. Oft fehlen Teile in der Mitte oder am Ende, weil der GPS-Empfänger ausgefallen ist. Gründe sind z.B. Akku leer oder Wackelkontakt in der Stromversorgung. Am Lenker eines Rennrads oder beim Felsenklettern werden die Geräte schon hart rangenommen.

                              Ohne die Applikation zu kennen: warum nicht z.B. alle 30 Sekunden eine Sicherung (evtl. mit Integritätscheck) erzeugen? In der APP dann: "Wenn FAIL, dann nehme Sicherung"?

                              1. problematische Seite

                                Hallo,

                                die Geräte sichern die Aufzeichnungsdaten schon regelmäßig, aber es fehlt dann schon mal das Ende der Zeile, wenn gerade beim Sichern der Strom ausfällt, oder die Speicherkarte einen Wackelkontakt hat. GPS-Geräte sind auf geringes Gewicht und lange Laufzeiten getrimmt.

                                Es kommt auch vor, dass die Hersteller der Geräte unterschiedliche Vorstellungen davon haben, wie man eigene Erweiterungen einbaut. Das hat dann schon mal zur Folge dass Hersteller A die Daten von Hersteller B nicht annimmt. Hier kann ein einfaches Suchen und Ersetzen schon die Reparatur sein.

                                Gruß
                                Jürgen

                                1. problematische Seite

                                  Es kommt auch vor, dass die Hersteller der Geräte unterschiedliche Vorstellungen davon haben, wie man eigene Erweiterungen einbaut. Das hat dann schon mal zur Folge dass Hersteller A die Daten von Hersteller B nicht annimmt.

                                  Doof :-(

                                  Aber jetzt kommt gleich der Hotti daher und schlägt vor, dass doch bitteschön alle Hersteller (Drittanbieter, Clients...) sein überlegenes Format einsetzen sollen! Alle Probleme gelöst!

                                  1. problematische Seite

                                    Es kommt auch vor, dass die Hersteller der Geräte unterschiedliche Vorstellungen davon haben, wie man eigene Erweiterungen einbaut. Das hat dann schon mal zur Folge dass Hersteller A die Daten von Hersteller B nicht annimmt.

                                    Doof :-(

                                    Aber jetzt kommt gleich der Hotti daher und schlägt vor, dass doch bitteschön alle Hersteller (Drittanbieter, Clients...) sein überlegenes Format einsetzen sollen! Alle Probleme gelöst!

                                    So isses. Wenn maschinell erzeugte Dateien von Hand nachbearbeitet werden müssen, kann ja nun irgendwo etwas nicht stimmen.

                                    MfG

                                    1. problematische Seite

                                      Hallo Rolf,

                                      So isses. Wenn maschinell erzeugte Dateien von Hand nachbearbeitet werden müssen, kann ja nun irgendwo etwas nicht stimmen.

                                      na ja, es geht um die Behebung eines Datenfehlers in Folge eines Hardwarefehlers. Wenn bei Binärdaten einzelne Bits fehlen und die Byte- und Word-Grenzen nicht mehr stimmen, ist die Datei auch erst mal kaputt.

                                      Gruß
                                      Jürgen

                                      1. problematische Seite

                                        Hallo

                                        So isses. Wenn maschinell erzeugte Dateien von Hand nachbearbeitet werden müssen, kann ja nun irgendwo etwas nicht stimmen.

                                        na ja, es geht um die Behebung eines Datenfehlers in Folge eines Hardwarefehlers. Wenn bei Binärdaten einzelne Bits fehlen und die Byte- und Word-Grenzen nicht mehr stimmen, ist die Datei auch erst mal kaputt.

                                        Vielleicht ist ja grundsätzlich einfach nur das Format für die instantane Speicherung der Tracks kaputt?

                                        Wird jeder einzelne Punkt einzeln, beispielsweise als CSV-Zeile gespeichert, geht beim unintendierten ausschalten des Geräts genau eine Zeile kaputt. Beim erstellen eines XML-Exports ließe die Routine in diesem Falle einfach diese kaputte Zeile weg und schon hätte man eine funktionierende XML-Datei. Es fehlte dann halt nur der eine, sowieso nicht funktionstüchtige Datensatz.

                                        Tschö, Auge

                                        -- Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
                                        Toller Dampf voraus von Terry Pratchett
                                        1. problematische Seite

                                          Tach!

                                          Vielleicht ist ja grundsätzlich einfach nur das Format für die instantane Speicherung der Tracks kaputt?

                                          Wird jeder einzelne Punkt einzeln, beispielsweise als CSV-Zeile gespeichert, geht beim unintendierten ausschalten des Geräts genau eine Zeile kaputt.

                                          $text = file_get_contents("track.csv"); $text .= array_to_csv($data); file_put_contents("track.csv", $text); // Hardwareausfall beim Schreiben

                                          Ich würde nicht das Format als (un)passend bezeichnen. Man kann auch mit XML eine einigermaßen sichere Verarbeitung erreichen. Es kommt darauf an, wie man es umsetzt. Zum Beispiel indem man in eine andere Datei schreibt und erst nach Abschluss dieses Vorgangs die alte ersetzt, in der Hoffnung, dass das Umbenenen schneller geht als die Hardware zuschlägt.

                                          dedlfix.

                                          1. problematische Seite

                                            Hallo

                                            Ich würde nicht das Format als (un)passend bezeichnen. Man kann auch mit XML eine einigermaßen sichere Verarbeitung erreichen. Es kommt darauf an, wie man es umsetzt. Zum Beispiel indem man in eine andere Datei schreibt und erst nach Abschluss dieses Vorgangs die alte ersetzt, in der Hoffnung, dass das Umbenenen schneller geht als die Hardware zuschlägt.

                                            Ja, klar, das geht natürlich auch. Das ist, unabhängig vom verwendeten Datenformat, sogar besser. Andere spielen auf die Weise ganze Betriebssystemupgrades ein.

                                            Tschö, Auge

                                            -- Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
                                            Toller Dampf voraus von Terry Pratchett
                                            1. problematische Seite

                                              Hallo,

                                              ich antworte mal hier.

                                              Mir ging es nicht darum, das GPX-Format zu bewerben oder zu verteufeln. Es gibt auch geräte, die in anderen Formaten abspeichern. GPX ist eigentlich das Austauschformat, dafür steht das „X“.

                                              Ich wollte eigentlich nur zeigen, dass es auch Fälle gibt, in denen man XML-Dateien wie Textdateien behandeln kann.

                                              Gruß
                                              Jürgen

                                              1. problematische Seite

                                                Tach!

                                                Ich wollte eigentlich nur zeigen, dass es auch Fälle gibt, in denen man XML-Dateien wie Textdateien behandeln kann.

                                                XML ist ja so gestaltet, dass es menschenlesbar und zur Not mit dem Texteditor bearbeitbar ist. Ginge es nur um einen maschinenlesbaren Datenaustausch könnte man auch ASN.1 mit BER-Encoding (oder ähnlichem) nehmen. Um händische und individuelle Bearbeitungen ging es aber hier nicht - diese Fälle waren nicht Gegenstand der Kritik -, sondern um das maschinelle Lesen, ohne dass ein Mensch mit seiner Intelligenz den Vorgang überwacht und einschreiten kann.

                                                dedlfix.

                                                1. problematische Seite

                                                  Hallo dedlfix,

                                                  BER Encoding? Um Himmels Willen, das wird doch nie fertig!!!

                                                  Rolf

                                                  -- sumpsi - posui - clusi
                                                  1. problematische Seite

                                                    hi

                                                    BER Encoding? Um Himmels Willen, das wird doch nie fertig!!!

                                                    wobei ein Encoding überhaupt gar nicht erforderlich ist wenn es nur darum geht, ein paar Zahlen abzuspeichern. Ein float point number mit Vorzeichen wie -1234.123456789 braucht in einer Datei stets genau 8 Bytes, egal wieviele Stellen hinterm Komma (Punkt) und egal ob mit oder ohne Vorzeichen.

                                                    Diese Datentypen gibt es in allen Programmiersprachen, sogar JavaScript kann damit umgehen.

                                                    MfG

                                                    1. problematische Seite

                                                      Hallo,

                                                      wobei ein Encoding überhaupt gar nicht erforderlich ist wenn es nur darum geht, ein paar Zahlen abzuspeichern. Ein float point number mit Vorzeichen wie -1234.123456789 braucht in einer Datei stets genau 8 Bytes, egal wieviele Stellen hinterm Komma (Punkt) und egal ob mit oder ohne Vorzeichen.

                                                      d.h. wenn ich einen Algorithmus baue, der mir die Farbinformationen eines JPGs in den Nachkommateil einer Zahl codiert, kann ich meine 20000 Bilder vom letzten und vorletzten Jahr mit jeweils 8 Byte auf eine Diskette archivieren?

                                                      Gruß
                                                      Kalk

                                                      1. problematische Seite

                                                        Die Floating point precision bestimmt die Länge der Sequenz. Guck Dir an, wie genau lon/lat für einen Trackpoint angegeben werden muss und dann siehst Du ja, ob Du 32 Bit oder 64 Bit brauchst.

                                                        20000 Stellen hinter dem Komma braucht das sicher nicht. Entscheidend ist der Fakt, daß, wenn Du Dich auf eine bestimmte Präzision festgelegt hast, die Zahlen innerhalb dieser Präzision alle diegleiche Byte~Länge haben. MfG

                                                      2. problematische Seite

                                                        Hallo Tabellenkalk,

                                                        den gibt's - z.B. Gödelisieren. Aber dafür ist double nicht genau genug.

                                                        Rolf

                                                        -- sumpsi - posui - clusi
                                                      3. problematische Seite

                                                        float32 reicht vollkommen (4 Bytes)

                                                        cite: In other words, using floats with latitude and longitude, with a single precision I can distinguish the lat/lng position of adjacent chairs in a conference room. With double precision, I can distinguish the lat/lng position of adjacent mitochondria in a skin cell on the scalp of the person sitting in one of those chairs

                                                        😉

                                                        1. problematische Seite

                                                          Hallo Rolf,

                                                          float32 reicht vollkommen (4 Bytes)

                                                          das wird eng. Mit guter GPS-Technik kommt man inzwischen in den cm-Bereich, also 10^-7 Grad.

                                                          Gruß
                                                          Jürgen

                                                          1. problematische Seite

                                                            Hallo

                                                            float32 reicht vollkommen (4 Bytes)

                                                            das wird eng. Mit guter GPS-Technik kommt man inzwischen in den cm-Bereich, also 10^-7 Grad.

                                                            Um den Bleistiftanspitzer auf dem Schreibtisch unter dem Papierstapel wiederzufinden? ;-)

                                                            *scwnr* 1

                                                            Tschö, Auge

                                                            1. sorry, could wirklich nicht resist

                                                            -- Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
                                                            Toller Dampf voraus von Terry Pratchett
                                                            1. problematische Seite

                                                              Hallo Auge,

                                                              Um den Bleistiftanspitzer auf dem Schreibtisch unter dem Papierstapel wiederzufinden? ;-)

                                                              bei solch hohen Genauigkeiten denke ich auch manchmal, das man sich im Nebel vom Navi bis in die Garage leiten lässt, und dann haben die Kinder die Fahrräder nicht weggeräumt. 😀

                                                              Aber es gibt schon sinnvolle Anwendungen für diese hohe Genauigkeit, z.B die Landvermessung.

                                                              Gruß
                                                              Jürgen

                                                              1. problematische Seite

                                                                hi

                                                                Um den Bleistiftanspitzer auf dem Schreibtisch unter dem Papierstapel wiederzufinden? ;-)

                                                                bei solch hohen Genauigkeiten denke ich auch manchmal, das man sich im Nebel vom Navi bis in die Garage leiten lässt, und dann haben die Kinder die Fahrräder nicht weggeräumt. 😀

                                                                Aber es gibt schon sinnvolle Anwendungen für diese hohe Genauigkeit, z.B die Landvermessung.

                                                                2009 noch sagte ein mir bekannter Landvermesser daß Messungen nach konventioneller Methode genauer sind. Theo Dolite hieß der, glaube ich 😉

                                                                Aber wichtig ist doch die Erkenntnis, daß man zum Speichern von 10000 Trackpoints mit 32Bit Genauigkeit nur 80000 Bytes braucht in einer Datei und daß eine Solche auch mit JavaScript gelesen werden kann (DataView auf ArrayBuffer mit byteLength 80000).

                                                            2. problematische Seite

                                                              Hallo Auge,

                                                              *scwnr* 1

                                                              *scrnr*2?

                                                              Bis demnächst
                                                              Matthias

                                                              1. sorry, could wirklich nicht resist

                                                              2. Nicht zu verwechseln mit Bildschirm-Nr.

                                                              -- Rosen sind rot.
                                                              1. problematische Seite

                                                                Hi,

                                                                *scwnr* 1

                                                                *scrnr*2?

                                                                eher *srcnr*3 - das Adverb kommt in der englischen Sprache vor dem Verb.

                                                                cu,
                                                                Andreas a/k/a MudGuard

                                                                1. sorry, could wirklich nicht resist

                                                                2. Nicht zu verwechseln mit Bildschirm-Nr.

                                                                3. ist auch nicht die Nummer einer Source.

                                                          2. problematische Seite

                                                            Moin,

                                                            float32 reicht vollkommen (4 Bytes)

                                                            das wird eng. Mit guter GPS-Technik kommt man inzwischen in den cm-Bereich, also 10^-7 Grad.

                                                            Trotzdem kommt es immer wieder vor, daß die falschen Berge bestiegen werden und Autofahrer einfach mitten auf der Autobahn stehenbleiben.

                                                            Sie haben ihr Ziel erreicht 😉

                                                            1. problematische Seite

                                                              Hallo Rolf,

                                                              Trotzdem kommt es immer wieder vor, daß die falschen Berge bestiegen werden und Autofahrer einfach mitten auf der Autobahn stehenbleiben.

                                                              ein Navi ist so gut, wie sein Benutzer. Ohne Orientierung und ohne Bereitschaft, einen Blick ins Handbuch zu werfen, kann die Navigation schon mal in die falsche Richtung gehen.

                                                              Gruß
                                                              Jürgen

                                                              1. problematische Seite

                                                                Hallo,

                                                                ein Navi ist so gut, wie sein Benutzer. Ohne Orientierung und ohne Bereitschaft, einen Blick ins Handbuch zu werfen, kann die Navigation schon mal in die falsche Richtung gehen.

                                                                stehen im Handbuch so unwahrscheinliche Dinge wie doppelte Ortsnamen drin? ;)

                                                                Gruß
                                                                Kalk

                                                                1. problematische Seite

                                                                  Hallo,

                                                                  stehen im Handbuch so unwahrscheinliche Dinge wie doppelte Ortsnamen drin? ;)

                                                                  nein, aber wie man die Übersichtskarte angezeigt bekommt, und wie die Entfernung zum Ziel.

                                                                  Gruß
                                                                  Jürgen

                                                          3. problematische Seite

                                                            @@JürgenB

                                                            Mit guter GPS-Technik kommt man inzwischen in den cm-Bereich, also 10^-7 Grad.

                                                            Was heutzutage alle geht! Aber 10⁻⁷ zu schreiben, ist Raketenwissenschaft …

                                                            LLAP 🖖

                                                            -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                                                            1. problematische Seite

                                                              Hallo Gunnar,

                                                              Aber 10⁻⁷ zu schreiben, ist Raketenwissenschaft …

                                                              leider bin ich in den Unicodetabellen nicht so zu Hause, wie du. 😟

                                                              Jürgen

                                                              1. problematische Seite

                                                                Hallo @JürgenB,

                                                                bei Wikipedia gibt es eine Liste der Unicodeblöcke :)

                                                                Viele Grüße
                                                                Robert

                                                                1. problematische Seite

                                                                  Hallo,

                                                                  bei Wikipedia gibt es eine Liste der Unicodeblöcke :)

                                                                  und Gunnar hat wahrscheinlich eine Super-Sonder-Spezial-Software aus dem Haus, in dem man nur anbeißt statt aufzuessen, dafür…

                                                                  Gruß
                                                                  Kalk

                                                                  1. problematische Seite

                                                                    @@Tabellenkalk

                                                                    bei Wikipedia gibt es eine Liste der Unicodeblöcke :)

                                                                    und Gunnar hat wahrscheinlich eine Super-Sonder-Spezial-Software aus dem Haus, in dem man nur anbeißt statt aufzuessen, dafür…

                                                                    Nö, nichts Super-sonder-spezielles. Das Stinknormale: [ctrl]+[cmd]+[Leertaste] öffnet die Zeichenübersicht:

                                                                    Bei Windows gibt’s unter Zubehör auch so eine Zeichentabelle.

                                                                    LLAP 🖖

                                                                    -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                                                                    1. problematische Seite

                                                                      Hallo,

                                                                      Bei Windows gibt’s unter Zubehör auch so eine Zeichentabelle.

                                                                      das ist richtig, aber wenn ich [ctrl]+[cmd]+[Leertaste] drücke passiert nix…

                                                                      Gruß
                                                                      Kalk

                                                                      1. problematische Seite

                                                                        Hallo @Tabellenkalk,

                                                                        Bei Windows gibt’s unter Zubehör auch so eine Zeichentabelle.

                                                                        das ist richtig, aber wenn ich [ctrl]+[cmd]+[Leertaste] drücke passiert nix…

                                                                        das ist klar, weil die Tastenkombination von Gunnar oberhalb eines Screenshots von MacOS angegeben ist 😉

                                                                        Viele Grüße
                                                                        Robert

                                                                    2. problematische Seite

                                                                      Gute Idee. Hab mir gerade gucharmap auf die , [STRG]+[UMSCHALT]+[Z] gelegt.

                                                                      Bildschirmfoto: gucharmap

                                                                      (Nein! Das ist Linux mit angepasstem XFCE-Desktop, nicht etwa Win2k oder ähnliches.)

                                                                      1. problematische Seite

                                                                        (Nein! Das ist Linux mit angepasstem XFCE-Desktop, nicht etwa Win2k oder ähnliches.)

                                                                        Man muss schon gestehen, dass es unter MacOS schon hübscher aussieht ;-)

                                                                2. problematische Seite

                                                                  Hallo Robert,

                                                                  bei Wikipedia gibt es eine Liste der Unicodeblöcke :)

                                                                  und da soll ich am Smartphone die "hoch -7" finden?

                                                                  Gruß
                                                                  Jürgen

                                                                  1. problematische Seite

                                                                    Hallo @JürgenB,

                                                                    bei Wikipedia gibt es eine Liste der Unicodeblöcke :)

                                                                    und da soll ich am Smartphone die "hoch -7" finden?

                                                                    Ja – oder woran scheitert es?

                                                                    Viele Grüße
                                                                    Robert

                                                                    1. problematische Seite

                                                                      Hallo Robert,

                                                                      daran, das ich diese Tabelle nicht kannte, aber in dieser riesigen Tabell den Link auch nicht gefunden hätte. Wie ich schon schrieb: „leider bin ich in den Unicodetabellen nicht so zu Hause“.

                                                                      Gruß
                                                                      Jürgen

                                                                3. problematische Seite

                                                                  Hallo Robert B.,

                                                                  bei Wikipedia gibt es eine Liste der Unicodeblöcke :)

                                                                  In unserem Wiki gibt es eine reduzierte Liste.

                                                                  Bis demnächst
                                                                  Matthias

                                                                  -- Rosen sind rot.
                                                                  1. Hallo @Matthias Apsel,

                                                                    In unserem Wiki gibt es eine reduzierte Liste.

                                                                    … und die wichtigsten sind dabei \o/

                                                                    Schönes Wochenende
                                                                    Robert

                                                                    1. @@Robert B.

                                                                      In unserem Wiki gibt es eine reduzierte Liste.

                                                                      … und die wichtigsten sind dabei \o/

                                                                      Wie bitte‽‽

                                                                      Eine Liste, in der das Interrobang fehlt, kann ich nicht ernstnehmen.

                                                                      LLAP 🖖

                                                                      -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                                                                      1. Hallo Gunnar Bittersmann,

                                                                        Wie bitte‽‽

                                                                        Eine Liste, in der das Interrobang fehlt, kann ich nicht ernstnehmen.

                                                                        ⸘Qué estás diciendo‽

                                                                        Bis demnächst
                                                                        Matthias

                                                                        -- Rosen sind rot.
                                                                        1. @@Matthias Apsel

                                                                          ⸘Qué estás diciendo‽

                                                                          Das kommt mir spanisch vor.

                                                                          Kommt mir aber nur so vor. Wenn es Spanisch wäre, stünde ja {:@es} (oder lang1 {:lang="es"} dran.

                                                                          LLAP 🖖

                                                                          1. No pun intended.

                                                                          -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                                                                          1. Hallo Gunnar Bittersmann,

                                                                            ⸘Qué estás diciendo‽

                                                                            Das kommt mir spanisch vor.

                                                                            Kommt mir aber nur so vor. Wenn es Spanisch wäre, stünde ja {:@es} (oder lang {:lang="es"} dran.

                                                                            ⸘‽ ist lang genug.

                                                                            Bis demnächst
                                                                            Matthias

                                                                            -- Rosen sind rot.
                                                                            1. @@Matthias Apsel

                                                                              ⸘Qué estás diciendo‽

                                                                              Das kommt mir spanisch vor.

                                                                              Kommt mir aber nur so vor. Wenn es Spanisch wäre, stünde ja {:@es} (oder lang {:lang="es"} dran.

                                                                              ⸘‽ ist lang genug.

                                                                              Lass das keinen Katalangen hören.

                                                                              LLAP 🖖

                                                                              -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                                                                          2. Hallo Gunnar,

                                                                            SYNTAX ERROR - UNMATCHED PARENTHESIS

                                                                            Rolf

                                                                            -- sumpsi - posui - clusi
                                                                            1. @@Rolf B

                                                                              SYNTAX ERROR - UNMATCHED PARENTHESIS

                                                                              Hier ist die Klammer zu:)

                                                                              LLAP 🖖

                                                                              -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                                                              2. problematische Seite

                                                                hi

                                                                Aber 10⁻⁷ zu schreiben, ist Raketenwissenschaft …

                                                                leider bin ich in den Unicodetabellen nicht so zu Hause, wie du. 😟

                                                                Die Zeichen heißen SUPERSCRIPT MINUS und SUPERSCRIPT SEVEN, kannst auch hier danach suchen. MfG

                                                            2. problematische Seite

                                                              Hallo Gunnar Bittersmann,

                                                              Mit guter GPS-Technik kommt man inzwischen in den cm-Bereich, also 10^-7 Grad.

                                                              Was heutzutage alle geht! Aber 10⁻⁷ zu schreiben, ist Raketenwissenschaft …

                                                              Wieso? Jürgen hat doch nur den Kontextwechsel übersehen 😉

                                                              Bis demnächst
                                                              Matthias

                                                              -- Rosen sind rot.
                                                    2. problematische Seite

                                                      Hallo pl,

                                                      ich wusste doch, das was faul war als heute morgen um 06:00 der Wecker „I Got You Babe“ spielte.

                                                      Natürlich brauchst Du dafür ein Encoding.

                                                      • ASCII : 0x2d 0x31 0x32 0x33 0x34 0x2e 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39
                                                      • EBCDIC: 0x60 0xf1 0xf2 0xf3 0xf4 0x4b 0xf1 0xf2 0xf3 0xf4 0xf5 0xf6 0xf7 0xf8 0xf9
                                                      • IEEE 754 single: 0xf3 0x43 0x9a 0xc4 (big endian)
                                                      • IEEE 754 single: 0xc4 0x9a 0x43 0xf3 (little endian)
                                                      • IEEE 754 double: 0xC0 0x93 0x48 0x7E 0x6B 0x74 0xDC 0xE6 (big endian)
                                                      • IEEE 754 double: 0xE6 0xDC 0x74 0x6B 0x7E 0x48 0x93 0xC0 (little endian)

                                                      Encoding ist die Vorschrift, mit der der SEMANTISCHE Inhalt des Speichers auf die Bytes in einer externen Repräsentation abgebildet wird, z.B. einer Datei.

                                                      Der semantische Inhalt ist -1234.123456789. Ein little-endian Prozessor speichert das als 64-bit IEEE 754 double als E6DC746B7E4893C0.

                                                      Diese Information braucht Kontext, um sinnvoll wieder eingelesen werden zu können. (1) Ist das IEEE 754 und (2) ist es little oder big endian. Dieser Kontext ist das Encoding.

                                                      Grüß mir Phil, wenn du wieder mal nach Punxsutawney kommst.

                                                      Rolf

                                                      -- sumpsi - posui - clusi
                                                      1. problematische Seite

                                                        hi,

                                                        Der semantische Inhalt ist -1234.123456789. Ein little-endian Prozessor speichert das als 64-bit IEEE 754 double als E6DC746B7E4893C0.

                                                        Und in einer Datei sind 64 Bit genau 8 Bytes, egal ob der Byteorder. Wenn man also eine Zahl -1234.123456789 aus einer Datei zu lesen hat, liest man 8 Byte. Auch für eine Zahl 53.324 werden nur 8 Byte gelesen obwohl die Zahl aufm Papier kürzer aussieht. Bytessequenzen kennen kein Encoding.

                                                        MfG

                                      2. problematische Seite

                                        Hi Jürgen,

                                        So isses. Wenn maschinell erzeugte Dateien von Hand nachbearbeitet werden müssen, kann ja nun irgendwo etwas nicht stimmen.

                                        na ja, es geht um die Behebung eines Datenfehlers in Folge eines Hardwarefehlers. Wenn bei Binärdaten einzelne Bits fehlen und die Byte- und Word-Grenzen nicht mehr stimmen, ist die Datei auch erst mal kaputt.

                                        Ja, das mag sein. Aber mal grundsätzlich gedacht: Es gibt Dateiformate die genau für solche Dinge entwickelt wurden, speziell zum Aufzeichnen (Streaming) von Daten. Und solche Formate haben da auch eine gewisse Fehlertoleranz die man mit XML nicht sicherstellen kann.

                                        MfG

                                2. problematische Seite

                                  Hallo,

                                  Es kommt auch vor, dass die Hersteller der Geräte unterschiedliche Vorstellungen davon haben, wie man eigene Erweiterungen einbaut. Das hat dann schon mal zur Folge dass Hersteller A die Daten von Hersteller B nicht annimmt. Hier kann ein einfaches Suchen und Ersetzen schon die Reparatur sein.

                                  Womit wir wieder bei den regulären Ausdrücken wären 😉

                                3. problematische Seite

                                  Tach!

                                  Es kommt auch vor, dass die Hersteller der Geräte unterschiedliche Vorstellungen davon haben, wie man eigene Erweiterungen einbaut. Das hat dann schon mal zur Folge dass Hersteller A die Daten von Hersteller B nicht annimmt.

                                  Hat der wohl RegExp statt eines XML-Parsers verwendet?

                                  dedlfix.

                            2. problematische Seite

                              Hallo Jürgen,

                              Ich bekomme oft GPX-Dateien zugesandt, die nicht „funktionieren“.

                              Sind die Dateien von Hand erstellt?

                              nein. Oft fehlen Teile in der Mitte oder am Ende, weil der GPS-Empfänger ausgefallen ist. Gründe sind z.B. Akku leer oder Wackelkontakt in der Stromversorgung. Am Lenker eines Rennrads oder beim Felsenklettern werden die Geräte schon hart rangenommen.

                              Das erinnert mich an einen Schweizer, der uns mal am Seekofel (Pragser Wildsee) begegnet ist und seinen Höhenmesser ganz stolz auf seiner Brust vor sich her trug 😉

                              Was das Dateiformat betrifft, das ist in der Tat anfällig in dieser Hinsicht, weil es nicht streamfähig ist. XML muss wohlgeformt sein sonst streikt der Parser.

                              Bei einem echten Stream hingegen kann man das Schreiben beliebig abbrechen und das Weiterschreiben wieder aufnehmen, da werden die Sequenzen einfach nur aneinandergehängt. Siehe mp3 wenn man da Stücke raus~ oder abschneidet hörst sich das u.U. komisch an aber es ist immer noch abspielbar.

                              MfG

                    2. problematische Seite

                      @@JürgenB

                      … XML-Daten (welche zugegenermaßen fälschlicherweise als Text-Datei bezeichnet wird). …

                      was ist daran falsch? Für mich sind xml-Daten erst mal nur Strings, die man auch mit Stringmethoden bearbeiten kann.

                      Ja, man kann auch SVG-Dateien mit Stringmethoden bearbeiten … Ein Vektorgrafikprogramm dürfte geeigneter sein.

                      LLAP 🖖 --
                      „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann

                    3. problematische Seite

                      da gebe ich Dir recht, Jürgen. Ich hatte mich allerdings weniger auf den Umstand, dass es sich um eine Datei handelt, die darstellbare Zeichen enthält, sondern auf das etwas spezifischere Dateiformat bezogen. Bei einer Datei mit der Endung .xml hätte man davon ausgehen dürfen, dass es sich um validen XML-Code handelt, der als XML verarbeitet werden kann. Im Falle einer Textdatei mit Suffix .txt nicht zwingend imho, zumindest nicht, ohne den Inhalt vorher zu inspizieren.

                      1. problematische Seite

                        Hallo,

                        ich habe auch nur deswegen nachgehakt, weil ich in meinem GPX-Parser die Daten per http-Request als Text-Datei lade und in einem ersten Schritt auch mit Stringmethoden behandle.

                        Gruß
                        Jürgen

        3. problematische Seite

          Hallo Henry,

          Deshalb mich direkt negativ zu bewerten, als wenn mein Vorschlag falsch wäre, ist (meiner Meinung nach) schon etwas... na ja du weißt schon😉

          Dein Lösungsvorschlag, XML mit Regexen zu erschlagen, ist falsch. Reguläre Ausdrücke mögen inzwischen nicht mehr regulär sein (ob das so ist hängt auch von der verwendeten Engine ab), aber XML sollte man nie mit Regexen parsen, auch wenn das gemäss DTD möglich sein sollte. Dazu ist XML zu komplex und kann zu viele Unwägbarkeiten enthalten.

          LG,
          CK

          -- https://wwwtech.de/about
        4. problematische Seite

          Moin @Henry,

          wie ich schon schrieb... Viele Wege führen nach Rom.

          … und in deinem Fall auch woanders hin 😉

          Und die Überschrift, wenn irgend jemand das mal durch Websuche findet, lautet aus Textdatei, also global.

          XML ist auch eine Form von Textdatei 😉

          Deshalb mich direkt negativ zu bewerten, als wenn mein Vorschlag falsch wäre

          Dein Vorschlag ist nicht nur konjunktiv falsch, sondern objektiv.

          Viele Grüße
          Robert

          1. problematische Seite

            Hallo Robert,

            Deshalb mich direkt negativ zu bewerten, als wenn mein Vorschlag falsch wäre

            Dein Vorschlag ist nicht nur konjunktiv falsch, sondern objektiv.

            Hmm, dachte eher das wäre Konjunktiv 2 Gruss
            Henry

    2. problematische Seite

      Hallo @Henry,

      Viele Wege führen nach Rom... hier mal einer:

      // Der Reguläre Ausdruck // $pattern = '@<trkpt .*="(.*)".*"(.*)">@isU';>

      der führt nicht nur nach Rom, sondern auch in ein kleines gallisches Dorf, siehe:

      Array ( [0] => Array ( [0] => <trkpt lat="53.188185"lon="7.216993"> [1] => <trkpt lat="53.184541"lon="7.217456"> ) [1] => Array ( [0] => 53.188185 [1] => 53.184541 ) [2] => Array ( [0] => 7.216993 [1] => 7.217456 ) )

      😝

      Viele Grüße
      Robert

      Folgende Nachrichten verweisen auf diesen Beitrag:

    3. problematische Seite

      sollte dann jemand verbessern der sich damit besser auskennt

      /<trkpt\s(?=.*?(\blat\s*=\s*["']?\s*\b[\d.]+)).*?(\blon\s*=\s*["']?\s*\b[\d.]+)/si

      1. problematische Seite

        @@t-rex rox

        sollte dann jemand verbessern der sich damit besser auskennt

        /<trkpt\s(?=.*?(\blat\s*=\s*["']?\s*\b[\d.]+)).*?(\blon\s*=\s*["']?\s*\b[\d.]+)/si

        Bitteschön:

         

        Gerngeschehen.

        LLAP 🖖

        -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
  3. problematische Seite

    Hallo Linuchs,

    probiere diesen Ansatz:

    <?php $lat = array(); $lon = array(); $xmldoc = new DOMDocument(); $xmldoc->loadxml(file_get_contents("daten.xml")); $trkptnodes = $xmldoc->getElementsByTagName("trkpt"); foreach($trkptnodes as $trkptnode) { $lat[] = $trkptnode->getAttribute("lat"); $lon[] = $trkptnode->getAttribute("lon"); } print_r($lat); print_r($lon); ?>

    Getestet mit dieser "daten.xml":

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <gpx> <trkpt lat="53.188185" lon="7.216993"></trkpt> <trkpt lat="53.184541" lon="7.217456"></trkpt> </gpx>

    Array ( [0] => 53.188185 [1] => 53.184541 ) Array ( [0] => 7.216993 [1] => 7.217456 )

    Grüße,
    Thomas

    1. problematische Seite

      Hallo ThomasM,

      danke für die Vorlage :) War ich zu faul für.

      Das funktioniert dann sicher auch mit Gunnars Leer-Elementen und mit ' statt " als Attribut-Delimiter.

      Rolf

      -- sumpsi - posui - clusi
      1. problematische Seite

        @@Rolf B

        Das funktioniert dann sicher auch mit Gunnars Leer-Elementen

        Stimmt, die Kurzschreibweise <trkpt/> statt <trkpt></trkpt> ist auch ein Grund, warum Henrys Ausdruck falsch ist. Den meinte ich eigentlich gar nicht; ich war bei <trkpt/> nur zu faul zum Schreiben.

        Was ich meinte, steckt in den Pünktchen.

        und mit ' statt " als Attribut-Delimiter.

        Ja, das steckt auch in den Pünktchen. Ich meinte noch was anderes …

        LLAP 🖖

        -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
  4. problematische Seite

    Hallo,

    das Format sieht nach gpx aus. Dafür gibt es bestimmt fertige Parser in PHP. Ich kann da nur eine JS-Version bieten.

    Gruß
    Jürgen

    1. problematische Seite

      Hallo,

      das Format sieht nach gpx aus. Dafür gibt es bestimmt fertige Parser in PHP. Ich kann da nur eine JS-Version bieten.

      Das interessiert mich. Ist das ein Parser der die gesamte Datenstruktur erfasst oder werden da nur einzelne Elemente+Attribute ausgelesen?

      MfG

      1. problematische Seite

        Hallo,

        ich verwende in einem ersten Schritt den DOMParser, da ich die gpx-Dateien als Text ausliefere. Danach suche ich die "Tags", die ich benötige, also nicht alle, mit getElementsByTagName oder querySelector. Mehr unter https://www.j-berkemeier.de/GPXViewer/ und den darin verlinkten Beispielen.

        Gruß
        Jürgen

        1. problematische Seite

          Das ist Gut!!!! MfG