2012-09-11 44 views
0

請考慮這種情況:如何在C#中獲得HTML的一部分#

我們有兩個網頁。一個簡單的頁面,其中包含一些控件,另一頁Execute首頁並獲得輸出HTML。例如:

StringWriter textWriter = new StringWriter(); 
HttpContext.Current.Server.Execute("Blinker.aspx", textWriter); 
Label1.Text= Server.HtmlEncode(textWriter.ToString()); 

,並返回這個(例如):

<!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> 
    <title> </title> 
</head> 
<body> 
<form method="post" action="Blinker.aspx" id="form1"> 
    <div class="aspNetHidden"> 
     <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZKwUTjEtU7qJweOD/x+Op0ROdM+jDqyILuizFGhjOJQj" /> 
    </div> 
    <div class="blink"> Some Test</div> 
</form> 
</body> 
</html> 

的問題是,如果我只想:

<div class="blink"> Some Test</div> 

如何我可以從輸出HTML中得到它C#?

謝謝

+3

可能重複[什麼是C#來解析HTML的最佳方式?](http://stackoverflow.com/questions/56107/what-is-the -best-to-parse-html-in-c) –

+0

爲什麼不把'

'提取到用戶控件,然後渲染那個用戶控件? –

+0

監守其他一些人設計的網頁,現在他們不能現在 – Arian

回答

1

有以下選項

  1. 應用正則表達式來從響應HTML
  2. 使XML文檔中提取這樣的文字,通過所有的潛水標籤迭代。
+0

感謝我怎麼可以在XML獲得ID =「MyDiv」一個div改變他們? – Arian

+0

http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.getelementbyid.aspx請參閱此URL –

4

HTMLAgilityPack一試。

這是一個可愛的HTML解析器,通常爲此推薦。它將採用格式不正確的HTML並將其按摩到XHTML中,然後像XML類一樣穿越DOM。所以,對於你在野外找到的代碼非常有用。

0

我們在我們的項目中有一個相同的場景。我建議雙方RegexHTMLAgilityPack

  • 使用Agilitypack可以過濾掉從網頁的C#代碼的具體內容,你也有LINQ

  • 然後,如果你需要獲取任何particluar文本中的文本或任何個人價值,你可以使你成爲正則表達式。

希望這有助於的

1
HtmlElementCollection tData = wb.Document.GetElementsByTagName("div"); 

      foreach (HtmlElement td in tData) 
      { 
       string name = ""; 
       if (td.GetAttribute("classname") == "blink") 
       { 
        name = td.InnerText; 
       } 
      } 
相關問題