2014-10-20 72 views
5

我要問一個問題:的XPath選擇所有文本(),但不能從特定的標籤/ class屬性

的結構是這樣的:

<div class='item'> 
    <div class='all'> 
     BY 
     <p>ABC</p> 
     <p>DEF</p> 
     <p> 
     <span class="date">19991111</span> 
     </p> 
    </div> 
</div> 

我想問問如何選擇所有text() (BY ABC DEF),但不包含<span class="date">DDD</span>(19991111)

我發現not()方法span[not(@class, 'date')
但不知道如何與//div[@class=item]/div[@class='all']//text()結合

請教我謝謝

回答

2

您可以像這樣將它們組合起來:

//div[@class=item]/div[@class='all']//text()[not(parent::span[@class='date'])] 

以上的XPath選擇哪個父母不匹配div[@class='all']中的所有文本節點span[@class='date']

您可能需要使用normalize-space()也過濾掉空文本節點:

//div[@class=item]/div[@class='all']//text()[not(parent::span[@class='date']) and normalize-space()] 
相關問題