민첩성 html 파서 버퍼 / 스트림에서 읽기

asp.net c# html html-agility-pack httpmodule

문제

HTTP 모듈을 사용하여 브라우저에서 렌더링하기 전에 HTML 페이지를 변경하려고합니다. 민첩성 HTML 파서를 구현하려고했지만 파일에서 읽는 것만 보인다.

어떻게하면 버퍼 / 스트림에서 읽을 수 있습니까?

public override void Write(byte[] buffer, int offset, int count)
    {
      byte[] data = new byte[count];
      Buffer.BlockCopy(buffer, offset, data, 0, count);
      string html = System.Text.Encoding.Default.GetString(buffer);

      HtmlDocument doc = new HtmlDocument();
      doc.Load(html);
      foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
      {
      HtmlAttribute att = link["href"];
      att.Value = FixLink(att);
      }
    }

수락 된 답변

MemoryStream 을 사용하여 데이터를 읽을 수 있어야합니다.

public override void Write(byte[] buffer, int offset, int count)
{
  var stream = new MemoryStream(buffer, offset, count);

  HtmlDocument doc = new HtmlDocument();
  doc.Load(stream);

  foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
  {
    HtmlAttribute att = link["href"];
    att.Value = FixLink(att);
  }
}

인기 답변

실제로 HtmlDocument.Load () 메서드는 오버로드되어로드 (로드),로드 (스트림, 부울),로드 (스트림, 인코딩) 등의 스트림로드에 대한 정의가 포함되어 있습니다.

http://htmlagilitypack.codeplex.com/의 다운로드 탭에서 설명서를 찾을 수 있습니다 .




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