敏捷性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/の [ダウンロード]タブでドキュメントを見つけることができます。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow