2011-09-18 4 views
2

이중 사업부 내에서 특정 콘텐츠를하고 난 다음 코드 블록 구문 분석 할 수있는 방법을 생각하지 않은 : XXXX는 랜덤html로 민첩성 팩 나는 HTML 민첩성 팩에 새로운 오전

<p> 
    <div class='myclass1'> 
     <div id='idXXXX'>content1<br>content2 
     </div> 
     <div class="myclass2"> 
      <table> 
       <tr> 
        <td align="left">content3 <b><a href="">content4</a></b></td> 
        <td align="right">content5 <b><a href="">content6</a></b></td> 
       </tr> 
      </table> 
     </div> 
    </div> 
</p> 

생성을 번호.

나는 HTML 문서를로드하는 데 필요한 모든 코드가 있습니다.

위의 코드에서 원하는 것은 content1과 content2를 얻고 다른 쿼리 content4를 얻는 것입니다.

답변

3
var doc = new HtmlDocument(); 
doc.Load("test.htm"); 
var res = doc.DocumentNode.SelectSingleNode("//div[@class='myclass1']"); 
var firstDiv = res.SelectSingleNode("div"); 
var content1 = firstDiv.ChildNodes[0].InnerText.Trim(); 
var content2 = firstDiv.ChildNodes[2].InnerText.Trim(); 
var content4 = res.SelectSingleNode(".//div[@class='myclass2']") 
        .SelectSingleNode(".//td[@align='left']/b/a") 
        .InnerText 
        .Trim(); 

UPDATE :

당신은 주어진 클래스 여러 div가 있고 당신은 당신이 할 수있는 그들 각각에 대한 내용과 일치 할 경우

var doc = new HtmlDocument(); 
doc.Load("test.htm"); 
var res = doc.DocumentNode.SelectNodes("//div[@class='myclass1']"); 
foreach (var item in res) 
{ 
    var firstDiv = item.SelectSingleNode("div"); 
    var content1 = firstDiv.ChildNodes[0].InnerText.Trim(); 
    var content2 = firstDiv.ChildNodes[2].InnerText.Trim(); 
    var content4 = item.SelectSingleNode(".//div[@class='myclass2']") 
         .SelectSingleNode(".//td[@align='left']/b/a") 
         .InnerText 
         .Trim(); 
} 
+0

내가 원하는 경우를 foreach 문을 추가하려면 어떻게해야합니까? "class"myclass1 "로 여러 div가 있기 때문에 –

+0

@Alexander Talavari, 예제를 보여주기 위해 제 대답을 업데이트했습니다. –

+0

몇 가지 이유로 첫 번째 루프에서 코드를 실행하면 다시 content1과 content2를 얻지 만 var content1 = item.ChildNodes [0] .InnerText.Trim(); 나에게 content3 + content4 + content5 + content6 문자열을 가져오고 var content2 = item.ChildNodes [2] .InnerText.Trim(); System.ArgumentOutOfRangeExeption을 발생시킵니다. 또한 콘텐츠 1과 2를 사용하여 동일한 foreach 루프에서 콘텐츠 4를 얻는 방법은 무엇입니까? content4는 content 1 및 content2의 내용에 태그를 지정하기 때문입니다. –

관련 문제