HtmlAgilityPack을 사용하여 htm 태그 값 가져 오기

c# css html html-agility-pack

문제

스타일을 따르는 HTML 블록 코드가 많아서 다음과 같은 값이 필요합니다.

  1. img에 대한 src 속성의 값
  2. 날짜 값
  3. 두 번째 img에 대한 소스 속성 값
  4. 세부

이 번호를 코드에 지정했습니다.

마지막으로이 모든 값을 XML 파일에 저장하려고합니다. HtmlAgilityPack에서 이러한 값을 얻을 수있는 방법에 대해 저를 도울 수 있습니까?

미리 감사드립니다.

<div class="promotion"> 
 <div class="logo">
       <img src='http://www.example.com/D.jpg' **(1)**>         
 </div>
 <div class="details">
    <p class="date"> 2015/12/12 **(2)** </p>
    <p> 
       <img src="http://www.example.com/DDD.jpg" **(3)** alt="" />
       <h3> Some Details **(4)** </h3>
    </p> 
 </div>
</div>

수락 된 답변

HTML을 질문에 넣는 것처럼 XPath를 사용하여 다음과 같은 순서로 결과를 검색 할 수 있습니다.

다음과 같은 이전 코드를 사용하면 HTML로 테스트 할 수 있습니다.

var html = @"<div class='promotion'> 
                     <div class='logo'>
                           <img src='http://www.example.com/D.jpg' **(1)**>         
                     </div>
                     <div class='details'>
                        <p class='date'> 2015/12/12 **(2)** </p>
                        <p> 
                           <img src='http://www.example.com/DDD.jpg' **(3)** alt='' />
                           <h3> Some Details **(4)** </h3>
                        </p> 
                     </div>
                    </div>";

var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
  1. 예를 들어 첫 번째 이미지의 경우 다음과 같습니다.

    var value = doc.DocumentNode.SelectSingleNode("//div[@class='logo']/img").Attributes["src"].Value;
    
  2. 다음과 같은 두 번째 경우 :

    var value = doc.DocumentNode.SelectSingleNode("//p[@class='date']").InnerText;
    
  3. 세 번째 :

    var value = doc.DocumentNode.SelectSingleNode("//div[@class='details']/p[2]/img").Attributes["src"].Value;
    
  4. 그리고 4 :

    var value = doc.DocumentNode.SelectSingleNode("//div[@class='details']/p[2]/h3").InnerText;
    

나는 이것이 당신을 도왔기를 바랍니다.



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