お世話になります。
ローカルマシンにあるHTML(php)ファイルのdom操作を行い
新しいファイルに保存することを考えています。
こちらの掲示板を参考に
---開始---
Dim Doc As MSHTML.HTMLDocument
Set Doc = New HTMLDocument
Dim ipFile As IPersistFile
Set ipFile = Doc
ipFile.Load "c:\old.php", STGM_READ
Doc.getElementById("TEST").innerText = "OK"
'getElementById("TEST")にはもともと"==="が入っていて
'デバッグウィンドウで
'? Doc.getElementById("TEST").innerText
'とすると OKと表示しています
ipFIleW.Save "c:\new.php", 0
---終了---
としています。
このときに、new.phpファイルには、old.phpと全く同じ状態の内容が
できあがっています。
dim ipFileを ipFileWriteとIpFileRead と読み書き別に設定してみたり
ipPersistStreamInitを使ってみたりしましたが、やはり同じ結果でした。
docの変更時にシグナルを送るとかするのでしょうか
ヒントでもかまいませんのでよろしくおねがいします
DOM を操作しても、ブラウザを右クリックしたときの「ソースの表示」の
中身は変わりませんので、そういう動作なのだと思います。
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200606/06060001.txt
対処方法があるのかどうかは分かりませんが、DOM による編集結果を
保存する方法として、とりあえず思いつくところでは:
(案1) DOM の .documentElement.outerHTML を保存するようにする。
(案2) DHTMLEdit コントロールの LoadURL(LoadDocument) メソッドと、
DOM プロパティおよび SaveDocument メソッドを使うようにする。
お返事ありがとうございます。
過去ログにあったのですね。
検索してみたのですが見つかりませんでした。
outerhtmlを使って文字列変数strHTMLに保存しました。
ところが該当するHTMLには先頭に<!DOCTYPE宣言があり、
この行が反映されないようです。
<!DOCTYPEが無いと、cssデザインが変わってしまうため必須です。
とりあえず、strHTML = "<!DOCTYPE " & strHTML にて回避しましたが
<!DOCTYPEは意味のある行なのでDOMのどこかにないのかなと疑問です。
1行だけなら上記方法で回避できますが、その他にも
DOMに入らないで重要な行って何かありますか
ツイート | ![]() |