2013-10-14 40 views
0

基本上我用下面的XML工作:如何執行以下XPath查詢?

<div> 
    <div> 
    <b>E-mail:</b> 
    <span>TheValue</span> 
    </div> 
    ... and more div tags 
</div> 

請記住,有很多不同的div標籤 - 但只有一個含有的innerText屬性標籤「電子郵件」。

我想要解析的是粗體標記等於「E-mail:」的span標記的值。

我知道我可以做這樣的事情("//div//div[contains(@text(), 'E-mail:')].innerText;

但我想通過檢查要做到這一點,如果大膽的標籤包含電子郵件,而不是整個div標籤的只是innerText屬性。

回答

1
//div/div[b = 'E-mail:']/span/text() 

但是最後text()是可選

//div/div[b = 'E-mail:']/span 

將正常工作。前者爲您提供文本節點,後者爲<span>元素。

如果他們不裹在<div>,而只是跟隨對方:

//b[. = 'E-mail:']/following-sibling::span[1] 

注意.innerText是非標準。您應該在現代瀏覽器中使用.textContent

+0

我明白了。 但是不應該 // div/div/[b ='E-mail:']/span 是 // div/div [b ='E-mail:']/span? 至少這對我有用。 然後我再次在C#中使用HtmlAgilityPack。 –

+0

DAMNIT。當然應該。錯字。 - HTML敏捷包在其API中包含'.innerText',那麼您就可以使用它了。 – Tomalak

+0

我看到了 - 非常感謝您的幫助:) 我是XPath的新手,所以這些答案很棒! –