2014-01-09 13 views
1

我知道有很多XPath href問題,但沒有一個適合我的情況,或者我是它的初學者,不知道我的代碼出了什麼問題。如果這是一個愚蠢的問題,請耐心等待。XPath到href屬性&WriteLine的URL

我有這樣的HTML結構:

<td valign="top">08-Jan-14 16:02</td> 
<td valign="top"><span style="cursor:help;" title="Regulatory News Service">RNS</span></td> 
<td valign="top"><a href="share-regulatory-news.asp?shareprice=BARC&amp;ArticleCode=d6rr2uxo&amp;ArticleHeadline=Blocklisting_Interim_Review" class="linkStoryHeadline rnsArticle" title="Blocklisting Interim Review">Blocklisting Interim Review</a></td> 
<td valign="top">Company Announcement - General</td> 

我的代碼是:

HtmlNodeCollection cols5 = rows[i].SelectNodes(".//td[3]/a[@href]"); 

流作家寫的網址:

sw.WriteLine(cols5[j].InnerText); 

結果似乎是Blocklisting Interim Review代替網址。任何人都可以好好研究一下嗎?我已經通過XPath指南並搜索了所有內容,但仍無法獲得我的案例的確切答案。任何幫助將非常感激!

+0

如果您最終將添加@href,該怎麼辦? .//td[3]/a[@href]/@href – Darka

回答

1

您無法使用XPath選擇屬性。選擇a元素,然後獲取它的href屬性。下面的XPath從href屬性第三個表格單元格a元素選擇(是的,謂語只是指定屬性應該存在,它沒有選擇屬性):

var a = doc.DocumentNode.SelectSingleNode(".//td[3]/a[@href]"); 
var href = a.Attributes["href"].Value; 

返回

份額監管-news.asp?shareprice = BARC & ArticleCode = d6rr2uxo & ArticleHeadline = Blocklisting_Interim_Review

+0

謝謝你,謝謝你指導我。但我不知道如何編輯我的代碼到你所說的?你介意看看它https://pastebin.com/X1J4uV72?我花了幾個小時來檢查這一點,但一無所獲。 :/ – Shyuan

+1

@Shyuan不使用選定節點的「InnerText」。這將返回'a'元素的內部文本,它是*「Blocklisting Interim Review」*。對於'cols5'獲取屬性值,如我所示 –

+0

我可以問你一個愚蠢的問題嗎?我在哪裏放上面的代碼? :( – Shyuan