2011-05-31 119 views
2

我已經試圖繞過使我的第一個C#應用程序(可以做的不僅僅是顯示「Hello World」),無法弄清楚的XPath HtmlAgilityPack

現在html文件有很多的標籤,(但只拿到兩塊如下H4標籤) 但這裏是我感興趣的部分:

<table width="100%" height="400" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#111111" background="images/page_bg.gif" style="BORDER-COLLAPSE: collapse"> 

<tbody valign="top"> 
<tr> 
<td> 

<table width="80%" border="0" valign=top background="images/page_bg.gif"> 
<tr> 
<td> 

    <div align="center"> 
    <h4 align="center"> 
     <font face="Verdana, Arial, Helvetica, sans-serif" size="2"> 
     <b> 
     <font size="4" face="Arial, Helvetica, sans-serif"> 
     UNWANTED TEXT 
     </font></b></font></h4> 

    <p><br /> 
    Name : {NAME HERE} <br>Number : {NUMBERS HERE}<br>Number2 : {NUMBERS2}<br><br><h4>UNWANTED TEXT</h4><br>detail NO. : <span class=style7>{NUmbers3}</span><br><br><a href=http://test.xom>UNWANTED TEXT</a><br><br>      
    </p> 
    <p class="content"><em><strong> 
    <p>&nbsp;</p> 

我希望得到名稱,Numbers1,Numbers2,Numbers3,所以,我想我該怎麼做像這樣=

//div[@align = "centre"]/h4/followingsibling::Text(); 

但肯定是不完整的,就怎麼辦吧,我從螢火蟲得到了Xpath的任何想法: /html/body/table/tbody/tr[2]/td/table/tbody/tr/td/table/tbody/tr[2]/td/div/table/tbody/tr/td/table/tbody/tr/td/div/h4

我也想這樣做(只是第一步,取得的原始數據,然後再修剪它)

HtmlNodeCollection node = doc.DocumentNode.SelectNodes("//table[@height='400']//div[@align='centre']"//p); 
      foreach(HtmlNode node1 in node)  
       textBox1.Text += node1.InnerText; 

但是這裏的節點傳遞爲NULL 任何幫助,非常感謝。

回答

4

Firefox將tbody標記添加到表格中(在原始html中,此標記可以不存在)。所以,我建議不要寫出所有路徑,找到最具特色的路徑並使用//。 例如,// DIV [@類= '數據'] /表// TR/TD

+0

你打算怎麼寫@calss =「data」? xpath接受一個字符串,「 - 」用於-data-創建一個問題。 doc.DocumentNode.SelectNodes( 「// DIV [@ ALIGN =」 中心 「/ P」); – TarunG 2011-05-31 09:54:17

+0

內部表達式可以使用單引號,例如:// div [@ align ='center']。或者,您可以使用雙引號:\「,例如:// div [@align = \」center \「] – VikciaR 2011-05-31 10:01:27

+0

HtmlNodeCollection node = doc.DocumentNode.SelectNodes(」// table [@ height ='400'] // div [@ align ='center']「// p);,試過這仍然沒有運氣,節點傳遞爲null。 – TarunG 2011-05-31 10:15:33

3

你有沒有注意到,你有@align="centre"但HTML有align="center"(如,英國VS美國拼寫)?

+1

是的,這是問題,它只是我愚蠢的愚蠢... – TarunG 2011-05-31 11:34:42