Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] DOMXPath liest nicht richtig

Einklappen

Neue Werbung 2019

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

  • [Erledigt] DOMXPath liest nicht richtig

    Hallo zusammen,

    ich habe gerade ein blödes Problem mit DOMDocument / DOMXPath

    Mein Script soll für einen Kunden eine Seite auslesen.

    Also, ich nehme mir den ersten Artikel und davon dann die erste <table> (nach den <br></br> ). Chrome zeigt mir diesen XPath:

    Code:
    /html/body/table/tbody/tr[2]/td[2]/table/tbody/tr/td[2]/table/tbody/tr[3]/td/table/tbody/tr/td/table[2]
    Einmal den Index-Kram entfernt, weil DOMXPath damit ja nichts anfangen kann:

    Code:
    /html/body/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/table
    Das schlägt fehl. Ich habe es schon mit DOMDocument und zig getElementsByTagName probiert - das ist aber wohl total unübersichtlich und funktioniert auch nicht.

    Aktueller Code, mit "Debug":

    PHP-Code:
    $xpath = new DOMXPath($this->dom);
    $products $xpath->query('/html/body/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/table'); // int(0)
    $products $xpath->query('/html/body/table/tbody'); // int(0)
    $products $xpath->query('/html/body/table'); // int(1) 
    Der Integer gibt an, wie viele Items gefunden wurden. Ab dem ersten <tbody> versagt DOMXPath jedoch.

    Kann mir jemand sagen wieso?

    Schönen Abend!

    Gruß
    Richard


  • #2
    Einmal den Index-Kram entfernt, weil DOMXPath damit ja nichts anfangen kann:
    Der Indexkram unterscheidet aber einen Knoten von einer Nodelist. Und, doch, natürlich kennt xpath Indizies.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Tbody ist tückisch. Kann drin sein, muss aber nicht. Da firefox und chrome die fehlenden tbody-tags gerne automatisch nachholen, täuscht die Realität in den devtools gerne.
      Man kann tbody optionalisieren, oder einfach weglassen.
      Standards - Best Practices - AwesomePHP - Guideline für WebApps

      Kommentar


      • #4
        Zitat von nikosch Beitrag anzeigen
        Der Indexkram unterscheidet aber einen Knoten von einer Nodelist. Und, doch, natürlich kennt xpath Indizies.
        Bei einem anderen Versuch hatte ich eigentlich festgestellt, das es nicht geht. Aber anscheinend geht es doch

        Zitat von rkr Beitrag anzeigen
        Tbody ist tückisch. Kann drin sein, muss aber nicht. Da firefox und chrome die fehlenden tbody-tags gerne automatisch nachholen, täuscht die Realität in den devtools gerne.
        Man kann tbody optionalisieren, oder einfach weglassen.
        Danke, das war's

        Kommentar


        • #5
          Zitat von rkr Beitrag anzeigen
          Tbody ist tückisch. Kann drin sein, muss aber nicht. Da firefox und chrome die fehlenden tbody-tags gerne automatisch nachholen, täuscht die Realität in den devtools gerne.
          Das Element <tbody> ist in HTML ein implizites Element. Das bedeutet wenn es nicht angegeben wurde, befindet es sich trotzdem in der <table> und wird im Inspector der Browser auch angezeigt.

          Auf dieses nicht angegeben Element kann sogar CSS angewendet werden http://wg.irama.org/html/test/table/implicit-tbody/

          Kommentar

          Lädt...
          X