DOBON.NETプログラミング道掲示板
(現在 過去ログ1 を表示中)

[ 最新記事及び返信フォームをトピックトップへ ]

■32902 / inTopicNo.1)  Htmlの書き換え
  
□投稿者/ ぶにゃっと 一般人(1回)-(2015/04/04(Sat) 23:08:13)
  • アイコン環境/言語:[Win7 VS2013 c#] 
    分類:[.NET] 

    はじめまして、ぶにゃっとと申します。

    C#で現在ローカルに保存してあるHTMLファイルを読み込んで、
    それを編集するアプリを作ろうと思っています。

    webBrowserでページを読み込んで、
    webBrowser1.Document.GetElementsByTagName("td")[1].InnerHtml = textBox2.Text

    で該当箇所を表示上変えることはできたのですが、これを

    var wc = new WebClient();
    wc.DownloadFile(webBrowser1.Url, "test.html");
    wc.Dispose();

    で保存してみても元の状態のままになってしまいます。
    もともとオンライン上のHTMLを扱うものなので、
    なんとなくこうなるのは分かるんですが、
    どうすれば書き換わった状態で保存できますか。

    ご教示お願いします!

引用返信 削除キー/
■32903 / inTopicNo.2)  Re[1]: Htmlの書き換え
□投稿者/ 魔界の仮面弁士 大御所(952回)-(2015/04/06(Mon) 10:02:31)
  • アイコンNo32902に返信(ぶにゃっとさんの記事)
    > C#で現在ローカルに保存してあるHTMLファイルを読み込んで、
    > それを編集するアプリを作ろうと思っています。

    File.ReadAllText メソッドと
    File.WriteAllText メソッドとか。
    http://dobon.net/vb/dotnet/file/readfile.html#section6
    http://dobon.net/vb/dotnet/file/writefile.html#section4


    > webBrowser1.Document.GetElementsByTagName("td")[1].InnerHtml = textBox2.Text

    WebBrowser を編集エディタとして使うのであれば、こういう方法もありますよ。

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
     ((dynamic)webBrowser1.Document.DomDocument).designMode = "on";
    }


    保存するのであれば、
     webBrowser1.Document.ExecCommand("SaveAs", false, Type.Missing);
    とか。


    > var wc = new WebClient();
    > wc.DownloadFile(webBrowser1.Url, "test.html");
    > wc.Dispose();
    > で保存してみても元の状態のままになってしまいます。
    このコードを書いてみた理由は何でしょうか?

    ご存知の通り、これは、サーバー上の Web ページを
    ダウンロードする処理ですよね。ローカルの HTML、ましてや
    WebBrowser で編集中の内容とは接点が見当たらないのですが…。


    > なんとなくこうなるのは分かるんですが、
    > どうすれば書き換わった状態で保存できますか。
    WebClient で受け取りたいのなら、さもそもダウンロードする前に、
    先にサーバーにアップロードしておく必要があります。

    しかし今はアップロード以前に、保存処理すらできていないのですよね。
    であれば現時点で、WebClient の出番は無さそうです。

    webBrowser1.Document を編集したのですから、
    保存もその webBrowser1.Document を用いて、こんな感じでどうでしょう。

    string filePath = @"C:\temp\sample.html";
    string HTML = (dynamic)webBrowser1.Document.DomDocument).documentElement.outerHTML;
    System.IO.File.WriteAllText(filePath , HTML,System.Text.Encoding.UTF8);
引用返信 削除キー/
■32905 / inTopicNo.3)  Re[2]: Htmlの書き換え
□投稿者/ ぶにゃっと 一般人(2回)-(2015/04/08(Wed) 01:05:10)
  • アイコンありがとうございます!
    ものすごく参考になりました!!

    これで半分くらい目的のツールに近づけました!


    ちなみに以下の部分ですが
    > var wc = new WebClient();
    > wc.DownloadFile(webBrowser1.Url, "test.html");
    > wc.Dispose();

    ローカルのファイルをサーバー上にあると見立てて、
    webBrowser1で表示、それを編集、それをダウンロード
    みたいなことができないかなぁと思いやってみたしだいです。

    本当に参考なりました!またなにかありましたら
    よろしくお願いいたします。
解決み!
引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/


- Child Tree -