Html Agility Pack은 double div 내에 특정 콘텐츠를 가져옵니다.

.net c# html html-agility-pack

문제

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>

여기서 XXXX는 임의로 생성 된 번호입니다.

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

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

수락 된 답변

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

최신 정보:

주어진 클래스가있는 div가 여러 개 있고 각 클래스의 내용을 일치 시키려면 다음을 수행 할 수 있습니다.

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



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.