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
Freigeben: 2024-12-08 18:30:15
Original
449 Leute haben es durchsucht

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"]'); 
Nach dem Login kopieren

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 ")]
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage