Xpath Ausdruck

Hallo,
ich habe eine xpath Abfrage, die eine bestimmte table aus einer HTML Seite herausliest. Dies funktioniert (siehe unten). Nur möchte ich eigentlich die Inhalte der td’s aus der Tabelle haben. Wie muss der xPath Ausdruck dafür aussehen?

  $finder = new DomXPath($dom);
  $classname = 'tblsort';   // der Name der class der Tabelle die die Daten enthaelt
  $dataTableList = $finder->query("//table[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]");
 
  if($dataTableList->count() == 1) $dataTable = $dataTableList[0]; // es gibt im besten Fall nur eine Tabelle
  else exit ('Abbruch: mehr als eine oder keine dataTable gefunden.');
  $tdElemList = $dataTable->getElementsByTagName('td'); // nur die td's raussuchen

Gruß

Hallo!

Prinzipiell sucht dein Code ja in der letzten Zeile bereits nach tds in der Tabelle, das sollte doch funktionieren, oder? Allerdings werden so alle Zellen nacheinander gefunden. Eine Tabelle besteht in HTML aber aus Zellen (td) und Zeilen (tr), daher wäre es möglicherweise besser, die Tabelle zeilenweise durchzugehen, oder?

Du müsstest mit

//table[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]/tr

direkt eine Liste aller Zeilen bekommen, erkennst dann aber nicht mehr, dass die ggf. aus zwei separaten Tabellen stammen. Das fragst du ja aktuell ab.

Danach sollte dir getElementsByTagName('td') alle Zellen in einer Zeile liefern.

Hallo,

mit

//table[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]/tr/td

funktioniert es in einem Aufruf ohne späteres rumfummeln in PHP. Danke

Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Nachrichten mehr erlaubt.