htmlAgilityPack 태그가없는 텍스트를 얻는 방법

c# html html-agility-pack xpath

문제

아래 HTML 파일이 있습니다.

  <div>

  <div style="margin-left:0.5em;">
  <div class="tiny" style="margin-bottom:0.5em;">
  <b><span class="h3color tiny">This review is from: </span>You Meet</b>
  </div>
  If you know Ron Kaufman as I do ...
  <br /><br />Whether you're the CEO....
  <br /><br />Written in a distinctive, ...
  <br /><br />My advice? Don't just get one copy
  <div style="padding-top: 10px; clear: both; width: 100%;"></div>
  </div>

  <div style="margin-left:0.5em;">
  <div class="tiny" style="margin-bottom:0.5em;">
  <b><span class="h3color tiny">This review is from: </span>My Review</b>
  </div>
  I became a fan of Ron Kaufman after reading an earlier book of his years ago...
  <div style="padding-top: 10px; clear: both; width: 100%;"></div>
  </div>

  </div>

나는 HTML 태그가없는 리뷰 텍스트를 원합니다. 아래 코드를 사용 중입니다.

  <div>

  <div style="margin-left:0.5em;">
  <div class="tiny" style="margin-bottom:0.5em;">
  <b><span class="h3color tiny">This review is from: </span>You Meet</b>
  </div>
  If you know Ron Kaufman as I do ...
  <br /><br />Whether you're the CEO....
  <br /><br />Written in a distinctive, ...
  <br /><br />My advice? Don't just get one copy
  <div style="padding-top: 10px; clear: both; width: 100%;"></div>
  </div>

  <div style="margin-left:0.5em;">
  <div class="tiny" style="margin-bottom:0.5em;">
  <b><span class="h3color tiny">This review is from: </span>My Review</b>
  </div>
  I became a fan of Ron Kaufman after reading an earlier book of his years ago...
  <div style="padding-top: 10px; clear: both; width: 100%;"></div>
  </div>

  </div>

"내 충고? 단 하나의 사본 만 가져 오지 마라"를 반환하는 경우 전체 텍스트를 어떻게 얻을 수 있습니까?

업데이트 : 모두 제거하더라도

"br"

htmlnode의 태그, 여전히 위의 코드를 사용할 때 "내 조언은 얻습니까? 한 장만 가져 오지 마세요"부분 !!! 어떤 코멘트?

수락 된 답변

코드를 다음과 같이 업데이트했습니다.

var allText = (reviewDiv.Descendants("div")
  .First(div => div.Attributes["style"].Value == "padding-top: 10px; clear: both; width: 100%;")
  .SelectNodes("./preceding-sibling::text()") ?? new HtmlNodeCollection(null)) 
  .Select(text => text.InnerText);

복잡한 스타일의 div 앞의 텍스트와 함께 IEnumerable 문자열을 반환해야합니다.

주위의 HTML을 조금 더 가지지 않고서도 이것이 정확히 당신이 쫓고있는 것인지를 말하기는 어렵습니다. 나는 현재 div를 선택했다는 것을 추측하고 div는이 전체 텍스트 블록의 직접적인 부모입니다 (reviewDiv에 대한 참조가 제공됨). HTML 샘플에는이 HTML 조각이 포함되어 있지 않으므로 여기서는 몇 가지 가정을하고 있습니다.

다음 입력으로 :

var allText = (reviewDiv.Descendants("div")
  .First(div => div.Attributes["style"].Value == "padding-top: 10px; clear: both; width: 100%;")
  .SelectNodes("./preceding-sibling::text()") ?? new HtmlNodeCollection(null)) 
  .Select(text => text.InnerText);

그것은 이것을 추출합니다 :

론 카프만을 내가 아는 한면 ...
당신이 CEO이든 ....
특유의 ...
나의 충고? 한 장만 가져 오지 마라.

단일 문자열을 만들려면 다음을 사용했습니다. string extractedText = string.Join("", allText);




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