2016-11-16 3 views
0

내가 이런 HTML의 조각이있을 때 목록 요소를 가져옵니다 :HTML 구문 분석

<li class="myclass"> 
      <ul class="myclass2"> 
       <li><span>Name1</span><span>Value1</span></li><li><span>Name2</span><span>Value2</span></li><li><span>Name3</span><span>Value3</span></li> 
      </ul> 
     </li> 

나는이 사용하는 HTML 민첩성 팩 등이 HTML 구문 분석하려고 해요 :

var values = mydetails.DocumentNode.QuerySelector(".myclass").QuerySelector("ul").InnerHtml; 

이 나를 제공을 이 부분은 :

<li><span>Name1</span><span>Value1</span></li><li><span>Name2</span><span>Value2</span></li><li><span>Name3</span><span>Value3</span></li> 

하지만 더 이상 갈 방법을 알고하지 않습니다, 나는 이름 및 값을 필요로하지만 그들을 얻을하는 방법을 모르겠어요. 그것을 할 수있는 방법을 보여줄 수 있습니까? 감사.

답변

1

당신은 당신의 항목에 html-id를 주어야합니다. 그러면 javascript에서이 요소를 얻는 것이 매우 쉬워야합니다. 나는 당신의 프레임 워크를 모르겠지만, 다른 사람이 jQuery를, 예를 들어, 매우 간단합니다 : $("#id")

+0

해당 항목에는 ID가 없으므로 ID를 부여 할 수 없습니다. – jason

+0

ID없이이 작업을 수행 할 수있는 방법이 있습니까? – jason

+0

당신은 getChild()를 시도 할 수 있습니다. ul에서이 함수를 사용하면 배열을 얻을 수 있습니다. 첫 번째 항목은 '.... QuerySelector ("ul"). getChild [0] ...' – jenald

1

당신은 모든 태그에서 값을 얻을 수있는 정규 표현식을 사용할 수 있습니다

public void ProcessSpans(string inputHTML) 
{ 
    string pattern = @"<span([^>]*)class=\""(\w+)\""([^>]*)>(.*)<\/span>"; 
    RegexOptions regexOptions = RegexOptions.Multiline; 
    Regex regex = new Regex(pattern, regexOptions); 
    var matches = regex.Matches(inputHTML); 
    //Process the matches with your logic. 
} 

그런 다음 메소드를 호출 as

var values = mydetails.DocumentNode.QuerySelector(".myclass").QuerySelector("ul").InnerHtml; 
ProcessSpans(values);