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/의 다운로드 탭에서 설명서를 찾을 수 있습니다 .