2015-04-01 2 views
1

Я только начинаю использовать Elive для задачи очистки экрана HTML. Если бы мне нужен текст из второго и четвертого узлов TD следующей таблицы, как бы я определил селектор? Я читал через учебник, но не нашел ни одного примера того, как определить, что в XPath будет:Использовать Enlive для соответствия определенному тегу TD в группе TD-тегов

HTML/тело/стол/тр/тд [2] и /тд [4] (при условии, один основанный индекс)

<html> 
<body> 
<table width="100%" border="0" cellspacing="3" cellpadding="2"> 
    <tr> 
    <td width="15%" class="labels">Part No</td> 
    <td class="datafield">I2013-00007</td> 
    <td class="labels"><div align="right">Parcel No</div></td> 
    <td colspan="3" class="datafield">07-220-12-03-01-2-00-000</td> 
    </tr> 
</table> 
</body> 
</html> 

Мне нужно захватить текстовое значение из этих двух узлов TD.

+0

что ваш точный вопрос, почему вы хотите, чтобы читать текст ..? Вы хотите заменить контент или любую другую цель – piyushmandovra

ответ

0

Вы можете использовать nth-of-type так:

user> (require '[net.cgrand.enlive-html :as html]) 
nil 
user> (def test-html 
"<html><body><table width='100%' border='0' cellspacing='3' cellpadding='2'><tr><td width='15%' class='labels'>Part No</td><td class='datafield'>I2013-00007</td><td class='labels'><div align='right'>Parcel No</div></td><td colspan='3' class='datafield'>07-220-12-03-01-2-00-000</td></tr></table></body></html>") 
#'user/test-html 
user> (:content (first (html/select (html/html-resource (java.io.StringReader. test-html)) [[:td (html/nth-of-type 2)]]))) 
("I2013-00007")