2011-06-28 5 views
3

私はHTMLアジリティパックを使用してHTML文書を解析し、ノードを変更してからHTML文書を保存します。ドキュメントをメモリに保存して、後でアプリケーションで文字列としてHTMLを書き出すことができます。私の現在の実装は常に文字列== ""を返します。デバッグ時にHtmlDocumentオブジェクトが空ではないことがわかります。誰かがいくつかの洞察力を提供できるかHtmlDocumentをメモリに保存するにはどうすればよいですか? Html Agility Pack

private string InitializeHtml(HtmlDocument htmlDocument) 
    { 
     string currentUserName = User.Identity.Name; 
     HtmlNode scriptTag = htmlDocument.DocumentNode.SelectSingleNode("//script[@id ='HwInitialize']"); 
     scriptTag.InnerHtml = 
      string.Format("org.myorg.application = {{}}; org.myorg.application.init ={{uid:\"{0}\", application:\"testPortal\"}};",currentUserName); 

     MemoryStream memoryStream = new MemoryStream(); 
     htmlDocument.Save(memoryStream); 
     StreamReader streamReader = new StreamReader(memoryStream); 
     return streamReader.ReadToEnd(); 
    } 
+3

補足として、[StringWriter](http://msdn.microsoft.com/en-us/library/hs9kt2e9.aspx)に書き込むほうが、必要なものがすべて文字列HTMLの –

+0

@Jeff - too true –

答えて

6

StreamReaderを作成し、ReadToEnd()

ストリームポインタを呼び出す前に

memoryStream.Seek(0, System.IO.SeekOrigin.Begin) 

を試してみてください可能性が高い(それはコンポーネントのためのベストプラクティスですSave方法により、ストリームの終わりに残ってきていますこれを行うには - の場合にストリームにデータを追加したい場合)ReadToEndに電話すると、すでに終了しています読んでください。

+0

Ahhはい。私は、セーブがストリームを最後に残していたことを今すぐ見ています。ありがとう! – Nick

+0

私はmemoryStreamで不完全なデータの問題に直面しました。ページのhtmlを取得するには、他のコメントにも言及しているように、StringWriterに直接書き込んでください。 'using(StringWriter sw = new StringWriter()) { doc.DocumentNode.WriteTo(sw); sw.Flush(); return sw.ToString(); } ' –

関連する問題