2011-04-07 28 views
0

我正在開發與Web站點交互的Windows窗體應用程序。解析HTML - 如何從標記中獲取數字?

使用WebBrowser控制我控制的網站,我可以使用通過標籤迭代:

HtmlDocument webDoc1 = this.webBrowser1.Document; 
HtmlElementCollection aTags = webDoc1.GetElementsByTagName("a"); 

現在,我想從它下面的標籤的特定文本:

<a href="issue?status=-1,1,2,3,4,5,6,7&amp;@sort=-activity&amp;@search_text=&amp;@dispname=Show Assigned&amp;@filter=status,assignedto&amp;@group=priority&amp;@columns=id,activity,title,creator,status&amp;assignedto=244&amp;@pagesize=50&amp;@startwith=0">Show Assigned</a><br>

像這裏一樣,我想在上面的標記中獲得等於assignedto的數字244並將其保存到變量中以供進一步使用。

我該怎麼做?

回答

1

您可以嘗試按';'分割字符串值,然後每串用「=」這樣的:

string aTag = ...; 
foreach(var splitted in aTag.Split(';')) 
{ 
    if(splitted.Contains("=")) 
    { 
     var leftSide = splitted.Split('=')[0]; 
     var rightSide = splitted.Split('=')[1]; 
     if(leftSide == "assignedto") 
     { 
      MessageBox.Show(rightSide); //It should be 244 
      //Or... 
      int num = int.Parse(rightSide); 
     } 
    } 
} 

另一種選擇是使用的正則表達式,你可以測試在這裏:www.regextester.com。和一些正則表達式的更多信息:http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.aspx

希望它有幫助!

+0

但如何讓coumplete標籤作爲字符串 – Prachur 2011-04-07 08:56:07

+0

嘗試的foreach(HTML元素的HtmlElement在aTags){字符串ATAG = htmlElement.OuterHtml ;} – icesar 2011-04-07 09:45:54

+0

@得到我需要從你的回答謝謝 – Prachur 2011-04-07 09:55:32

0

如果所有情況與此類似,你不介意在你的Windows窗體應用程序System.Web參考,土特產品可以做這樣的事情:

using System; 

public class Program 
{ 
    static void Main() 
    { 
     string href = @"issue?status=-1,1,2,3,4,5,6,7&amp; 
@sort=-activity&amp;@search_text=&amp;@dispname=Show Assigned&amp; 
@filter=status,assignedto&amp;@group=priority&amp; 
@columns=id,activity,title,creator,status&amp;assignedto=244&amp; 
@pagesize=50&amp;@startwith=0"; 

     href = System.Web.HttpUtility.HtmlDecode(href); 

     var querystring = System.Web.HttpUtility.ParseQueryString(href); 

     Console.WriteLine(querystring["assignedto"]); 
    } 
} 

這是一個簡單的例子,首先你需要提取href屬性文本,但這不應該很複雜。擁有href屬性文本,您可以利用這基本上是查詢字符串和.NET中的重用代碼已經解析查詢字符串。

要完成這個例子,獲得href屬性文字你可以這樣做:

HtmlElementCollection aTags = webBrowser.Document.GetElementsByTagName("a"); 

foreach (HtmlElement element in aTags) 
{ 
    string href = element.GetAttribute("href"); 
} 
+0

@ Joao抱歉說,但這似乎有點複雜,有沒有更簡單的方法來做到這一點 – Prachur 2011-04-07 09:05:04

+0

除非你添加一堆假設,我不會做任何其他方式,我可以問爲什麼你找到這個複雜? – 2011-04-07 09:18:43

+0

actualy HttpUtility給出錯誤,而不是上下文 – Prachur 2011-04-07 09:33:29