2013-03-06 7 views
0

HTML Порция:Использование Xpath Для извлечения элементов

<div class="abc"> 
    <div style="text-align:left; itemscopr itemtype="xyz"> 
     <h1 itemtype="mno"> I want this text </h1> 
    </div> 
</div> 

Я использую

$text = $xpath->query('//div[class="abc"]/div/h1] 

, но я не подвожу никакой ценности. Пожалуйста, помогите мне, поскольку я новичок в этом.

+0

может быть, вы пропустили текст() [1] в конце – mlwacosmos

ответ

1

Вы должны попробовать

//div[@class="abc"]/div/h1 

Разница заключается в @ знак перед тем class, потому что the attribute axis is accessed this way. Когда вы опускаете знак @, он ищет имена узлов (имена тегов).

Это возвращает вам весь узел h1 (или, скорее, узел, содержащий все соответствующие узлы h1).

Если вы только хотели текст из элемента, попробуйте функцию evaluate вместо:

$text = $xpath->evaluate("//div[@class='abc']/div/h1/text()") 
+0

я попробовал это, но я не получаю сообщение об пустой результат. Как получить из этого значение. Я также попробовал его с помощью text() в конце, но не повезло. Есть ли другой способ, возможно, использование регулярного выражения для извлечения или использования xpath - лучший вариант? – user2140852

+0

@ user2140852 Я изменяю свой ответ, чтобы принять во внимание. Теперь лучше? –

+0

Кроме того, убедитесь, что вы обрабатываете результат из 'query' как набора узлов. Следовательно, вы должны перебрать все элементы - см. Примеры [здесь] (http://www.php.net/manual/en/class.domxpath.php). –