2014-04-23 89 views
0

我要分析此文件:(只的重要組成部分)解析HTML頁面與敏捷性包WP8

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
... 
</head> 
<body onload="Xaprb.InputMask.setupElementMasks()"> 
<div align="center"> 
     <table> ... </table> 
     <table width="900" height="500" border="0" cellpadding="0" 
      cellspacing="0" class="content"> 
     <tr> 
    <td width="45">&nbsp;</td> 
    <td width="210" valign="top"> 
    <div class="np_table"> 
     <div class="np_bl"> 
      <div class="np_br"> 
       <div class="np_tl"> 
        <div class="np_tr"> 
        <span class="name_heading">Hello</span><br /> 
        <span class="name_content">**NAME I NEED**</span><br /> 
        <br /> <span class="name_heading">Number:</span><br /> 
        <span class="name_content">**NUMBER I NEED**</span> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> <br> 

    <div class="menu"> ... </div> 

    <p>&nbsp;</p> 
    </td> 
    <td width="600" valign="top"> 
     <div class="content_table"> 
     <div class="ct_bl"> 
      <div class="ct_br"> 
       <div class="ct_tl"> 
        <div class="ct_tr"> 
         <span class="heading">...</span> 
         <p><b>**I need this number too: 250**</b> <br /> 
       <br /> 
       Here is the datum I want: **17-04-2014**. <br /> 
       Please do not...</p> 
       <p><b>...</b></p> 
    <br /><br> 
       </div> 
      </div> 
     </div> 
     </div> 
    </div> 
    </td> 
</body> 
</html> 

,現在我想四根弦,這兩個數字,日期和名稱。我有這樣的代碼:

HttpClient client = new HttpClient(); 
var doc = new HtmlAgilityPack.HtmlDocument(); 
var html = await client.GetStringAsync("http://example.com"); 
doc.LoadHtml(html); 

var name = ??? 
var numberone = ??? 
var numbertwo = ??? 
var date = ??? 

但我不知道如何成爲HTML敏捷包的這些信息。有人能幫助我嗎?或者給我提示?

+0

你可能會發現這很有用。 [http://stackoverflow.com/questions/846994/how-to-use-html-agility-pack][1] –

回答

0

我們可以使用XPath查詢來使用HtmlAgilityPack選擇HTML文檔的特定部分。所以,讀了一些XPath的教程開始:

例如,從樣本HTML在這一問題得到NAME I NEED

var name = 
    doc.DocumentNode 
     .SelectSingleNode("//span[@class='name_content' and .='Hello']/following-sibling::span[1]"); 
if(name!= null) Console.WriteLine(name.InnerText); 

上述示例中使用的XPath說明:

//span

  • <span>元件掃描整個文檔...

[@class='name_content' and .='Hello']

  • 具有類屬性值等於"name_content"和元件值等於"Hello"

/following-sibling::span[1]

  • 然後從當前<span>獲得,最近的下一<span>類型的同級元素...
+0

謝謝!這是用於Name的,但Number項也在類名='name_content'的span元素中,第二個數字是元素dir的類名='ct_tr',但是我怎麼讀特定元素中的第一個數字var numbertwo和特定元素中的日期var date? – user3493797

+0

修正了我的樣本,用'r'表示'name'。在一個問題中有很多工作要解決。因此,我給出了一個示例,您試圖找出可能用於選擇其餘部分的標準,然後嘗試將標準轉換爲XPath查詢。無論您遇到什麼問題,請打開一個問題,表明您已嘗試並研究了多遠。 – har07

+0

好吧我現在明白了,謝謝您的幫助!剩下的就剩下了! :) – user3493797