2010-07-22 78 views
0

我想在c#中使用簡單的應用程序來獲取html頁面的文本? 如果有嵌套元素 即,如何解析c#中的HTMLDocument?

<Table> 
    <TR> 
     <TD>**ABC** 
     </TD> 
     <TD>**1** 
     </TD> 
    </TR> 
    <TR> 
     <TD>**XYZ** 
     </TD> 
     <TD>**2** 
     </TD> 
    </TR> 
</Table> 

我怎樣才能獲得文本(粗體)直接values.I想將它們保存在我的數據庫,並希望在GridView中顯示?

HtmlDocument htmlSnippet = new HtmlDocument(); 
htmlSnippet = LoadHtmlSnippetFromFile(); 

private HtmlDocument LoadHtmlSnippetFromFile() 
{ 
    //TextReader reader = File.OpenText(Server.MapPath("~/App_Data/HtmlSnippet.txt")); 

    WebClient webClient = new WebClient(); 
    const string strUrl = "http://www.dsebd.org/latest_PE_all2_08.php"; 

    Stream reader = webClient.OpenRead(strUrl); 

    HtmlDocument doc = new HtmlDocument(); 
    doc.Load(reader); 

    reader.Close(); 

    return doc; 
} 

從這個htmlSnippet我怎麼能得到的價值?

回答

1

我不確定,你需要什麼...給你的例子,你想要一個字符串"**ABC****1****XYZ****2**"

那麼這應該工作:htmlSnippet.Body.OuterText

編輯:好吧,試圖爲單獨的值的例子...

HtmlElement tableElement = FindElement(HtmlDocument.Body, "table"); 
foreach(HtmlElement row in tableElement.Children) 
{ 
    if (row.Name.ToLower() == "tr") 
    { 
     // create whatever class you use for a row 
     foreach(HtmlElement cell in row.Children) 
     { 
      if (cell.Name.ToLower() == "td") 
      { 
       // add a new cell to your row using cell.InnerText 
      } 
     } 
    } 
} 

// *** snip *** 

private HtmlElement FindElement(HtmlElement element, string name) 
{ 
    if (element.Name.ToLower() == name) 
    { 
     return element; 
    } 
    foreach(HtmlElement child in element.Children) 
    { 
     HtmlElement test = FindElement(test, name); 
     if (test != null) 
     { 
      return test; 
     } 
    } 
    return null; 
} 

對不起,我沒有任何的Visual Studio現在在這裏測試代碼。 ..祝你好運;-)

+0

我的例子包含兩行。每行包含兩列。我希望每列的值。我想將它們保存爲我的數據庫中的行。 – shamim 2010-07-22 12:25:30

+0

嗯,好吧,那麼你必須遍歷htmlSnippet.Body.Children並以正確的名字搜索HtmlElements。 – Hinek 2010-07-22 12:48:18

+0

htmlSnippet.Body.Children不工作,如果我寫htmlSnippet.DocumentNode.Children比work.How搜索HtmlElements你會發送一些語法 – shamim 2010-07-22 12:51:44