2011-04-07 2 views
0

웹 사이트와 상호 작용하는 Windows Forms 응용 프로그램을 개발 중입니다. 나는 웹 사이트를 제어하고 내가 사용하는 태그를 반복 할 수있는 WebBrowser 컨트롤을 사용HTML 구문 분석 - 태그에서 숫자를 가져 오는 방법은 무엇입니까?

:

: 이제

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>

위의 태그와 마찬가지로 숫자 244를 assignedto과 같게 만들고 나중에 사용할 수 있도록 변수에 저장하고 싶습니다.

어떻게하면됩니까?

답변

1

';'으로 문자열을 분할 할 수 있습니다. 값 다음 '='이 등으로 각 문자열 : www.regextester.com :

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); 
     } 
    } 
} 

다른 옵션은 여기에 테스트 할 수 있습니다 정규 표현식에를 사용하는 것입니다. 정규식에 대한 더 많은 정보 : http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.aspx

희망이 있습니다. 모든 경우에이와 유사하고 Windows Forms 응용 프로그램을 사용자의 System.Web에 대한 참조를 괜찮다면

+0

을하지만, 문자열 – Prachur

+0

시도의 foreach 문으로 coumplete 태그 (는 HTMLElement는 HTMLElement aTags에서)을 얻는 방법 {문자열 ATAG = htmlElement.OuterHtml :

href 당신이 할 수있는 텍스트 속성 얻기 위해, 예를 완료하려면 ;} – icesar

+0

@ 내가 ur 대답 덕분에 필요한 것을 가지고있어 – Prachur

0

는 가나가 같은 것을 할 수 있습니다

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의 코드를 다시 사용할 수 있습니다.

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

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

@ Joao 유감스럽게 생각하지만 조금 복잡해 보입니다. 이것을하기에 더 쉬운 방법이 있습니다. – Prachur

+0

많은 가정을 추가하지 않는 한, 나는 그것을하지 않을 것입니다. 다른 방법으로이 복합체를 찾은 이유를 물어볼 수 있습니까? –

+0

실제 HttpUtility는 문맥이 아닌 오류를 내고 있습니다. – Prachur

관련 문제