Heim >Backend-Entwicklung >PHP-Tutorial >Wie wähle ich eine CSS-Klasse mit XPath aus?

Wie wähle ich eine CSS-Klasse mit XPath aus?

Linda Hamilton
Linda HamiltonOriginal
2024-12-08 18:30:15376Durchsuche

How to Select a CSS Class Using XPath?

So wählen Sie eine CSS-Klasse mit XPath aus

Problem:

Sie möchten auswählen eine bestimmte Klasse namens „.date“ in einem HTML-Dokument mithilfe von XPath, aber Ihre Versuche waren erfolgreich erfolglos.

Code:

@$doc = new DOMDocument();
@$doc->loadHTML($html);
$xml = simplexml_import_dom($doc); //Simplify XPath
$images = $xml->xpath('//[@class="date"]'); 

Lösung:

Im Gegensatz zu CSS unterstützt XPath keine nativen Klassenselektoren. Es gibt jedoch eine Problemumgehung:

Korrekte XPath-Syntax:

//*[contains(concat(" ", normalize-space(@class), " "), " foo ")]

Dieser Ausdruck stimmt mit jedem Element überein, dessen Klassenattribut die Teilzeichenfolge „foo“ enthält.

Erklärung:

  • normalize-space: Entfernt Führendes und nachfolgendes Leerzeichen.
  • concat: Kombiniert „ “, den normalisierten @class-Wert, und „ “, um sicherzustellen, dass der Klassenname von Leerzeichen umgeben ist.
  • contains: Überprüft, ob die verkettete Zeichenfolge vorliegt enthält „foo ".

Beispiel:

<div>

Die XPath-Abfrage wählt das Element mit der Klasse „date“ korrekt aus und ignoriert das Element „foobar“.

Falsch Ansätze:

  • //*[@class="foo"]: Stimmt nicht mit Elementen mit mehreren Klassen überein.
  • //*[contains(@class, „foo“)]: Entspricht Elementen einer Klasse, die „foo“ als Teilzeichenfolge enthält, auch wenn es Teil eines längeren Klassennamens wie „foobar“ ist.

Das obige ist der detaillierte Inhalt vonWie wähle ich eine CSS-Klasse mit XPath aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn