XPath выберите все текстовое содержимое для A, кроме определенного тега

я поискал и попробовал несколько решений для этой проблемы, но ни один из них не работал: У меня есть этот HTML

<div class="detalhes_colunadados">
   <div class="detalhescolunadados_blocos">
     <h5>Descrição completa</h5>
    Sala de estar/jantar,2 vagas de garagem cobertas.<br>
    </div>
    <div class="detalhescolunadados_blocos">
      <h5>Valores</h5>
            Venda: R$ 600.000,00<br>
          Condomínio: R$ 660,00<br>
    </div>
</div>

и хотите извлечь XPath только текстовое содержимое в первом классе div= "detalhescolunadados_blocos", которые не являются тегами h5.

Я попытался: //div[@class= 'detalhescolunadados_blocos'] / [1] / * [не (self:: h5)]

3 ответов


попробуйте следующее выражение XPath:

//div[@class='detalhescolunadados_blocos'][1]//text()[not(ancestor::h5)]

это вернется:

$ xmllint --html --shell so.html
/ > xpath //div[@class='detalhescolunadados_blocos'][1]//text()[not(ancestor::h5)]    
Object is a Node Set :
Set contains 2 nodes:
1  TEXT
    content=      
2  TEXT
    content=     Sala de estar/jantar,2 vagas de gar...

Мне кажется, что это работает:

//div[@class="detalhescolunadados_blocos"]/text()

попробуйте сделать это :

//div[@class="detalhes_colunadados"]/div/text()