Я анализирую HTML-документ, и мне нужно имя класса div. Я знаю часть имени класса (которая никогда не меняется), но мне нужно полное имя класса.
Вот код, который я использую:
$doc = new DOMDocument;
$doc->loadHTMLFile('http://some_website.com');
$xpath = new DOMXPath($doc);
$classname_of_the_div=$xpath->query('//div[@class="part_of_the_class_name_that_never_changes"]');
Когда я var_dump()
$classname_of_the_div
и $classname_of_the_div->item(0)
, результат будет:
object(DOMNodeList)#3 (1) { ["length"]=> int(0) }
NULL
Я знаю, что $classname_of_the_div=$xpath->evaluate('string(//div[@class="part_of_the_class_name_that_never_changes"])');
дает мне содержимое div, но как мне получить полное имя класса?
P.S .: Часть имени класса отделяется от остальной части имени класса пробелами, поэтому на самом деле это не часть класса. В div всего несколько классов.
1 ответ
Я имею в виду, что у div есть несколько имен классов, например - я хочу выбрать его, например, "class2" и получить полную строку класса, включая "class1 class2 class3"
Затем выражение XPath вроде
//div[@class="part_of_the_class_name_that_never_changes"]
Никогда не даст результата, за исключением ситуации, когда конкретный элемент div
имеет только один класс, то есть тот, "который никогда не изменяется". Это потому, что приведенное выше выражение XPath означает:
Выберите элементы
div
с атрибутомclass
, строковое значение которого в точности соответствует "part_of_the_class_name_that_ Never_changes".
Но представьте себе следующую ситуацию:
<div class="part_of_the_class_name_that_never_changes other_class1 other_class2"/>
Затем вам нужно будет изменить выражение на:
//div[contains(@class,'part_of_the_class_name_that_never_changes')]/@class
Выражение означает:
Ищите элементы
div
с атрибутомclass
, строка которого значение содержит строку "part_of_the_class_name_that_ Never_changes" и вернуть атрибут ценность.
Похожие вопросы
Новые вопросы
xpath
Основной целью XPath является обращение к частям XML-документа. Он также предоставляет базовые возможности для манипулирования строками, числами и логическими значениями. XPath использует компактный синтаксис без XML. XPath работает с абстрактной логической структурой XML-документа, а не с его поверхностным синтаксисом.
class
для этого конкретногоdiv
?