2015-09-07 83 views
2

在成功提取nametime列之後,使用import.io,給定以下片段,如何提取最近的前一個.heading元素作爲第三列使用XPath?使用XPath在特定條件下獲取找到的元素之前的第一個元素

... 

<div class="row-fluid"> 
    <div class="heading">HBO</div> 
</div> 
<div class="row-fluid"> 
    <div class="name">Silicon Valley</div> 
    <div class="time">9pm</div> 
</div> 
<div class="row-fluid"> 
    <div class="name">The Wire</div> 
    <div class="time">10pm</div> 
</div> 
... 
<hr> 

<div class="row-fluid"> 
    <div class="heading">ABC</div> 
</div> 
<div class="row-fluid"> 
    <div class="name">Lost</div> 
    <div class="time">9pm</div> 
</div> 
<div class="row-fluid"> 
    <div class="name">Heroes</div> 
    <div class="time">10pm</div> 
</div> 
... 
<hr> 

... 
+0

「.heading」元素之前或之後最近? –

+0

@stribizhev在匹配數據之前出現的一個「標題」類最近的元素。 – gpmcadam

+0

我刪除了你的正則表達式(希望你能原諒我的坦率)。 [永遠不要使用正則表達式來處理(X)HTML](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454)。此外,即使它是_had和答案,它也會是相互衝突的主題,它們會更適合不同的問題。 – Abel

回答

1

,與一類「標題」的匹配的數據之前時最近的元件。

最近從給定的元件元件前面可以用XPath中preceding軸被發現。假設我們有表達div/div[class='name'][. = 'Heroes'],它在你的榜樣選擇姓氏,與最近的前一個是:

./preceding::div[@class = 'heading'][1] 

其中.或者是一個真正的上下文節點在這種情況下,你可以刪除./,或者它應該是換成你已有的表達的其餘部分。

由於之前的軸倒數,我們只想找到第一個元素。請注意,之前的軸不會選擇從當前節點開始計數的祖先節點或自節點。

相關問題