Hallo
DP !
Dieses Thema macht mich ganz irre !
Es gibt unzählige Threads im Netz über dieses simple Problem, aber nichts davon funktioniert annähernd. Ich möchte nach dem
DocumentComplete eines Browsers die angezeigte
XML Datei speichern.
Delphi-Quellcode:
procedure TFmain.WebBrowser1DocumentComplete(ASender: TObject;
const pDisp: IDispatch;
const URL: OleVariant);
var
HTML: IHtmlDocument2;
xml: WideString;
doc: OleVariant;
XMLText:
String;
begin
HTML := webbrowser1.Document
as IHTMLDocument2;
XMLText :=
HTML.body.innerText;
path := Extractfilepath(application.ExeName)+path_xml +'
\';
doc := WebBrowser1.Document;
xml := doc.XMLDocument.XML;
end;
Ich habe versucht, mit den oben aufgeführten Variablen zum Ziel zu kommen (gültige
XML-Datei zu speichern). Probiert habe ich es mit
a)
Delphi-Quellcode:
{++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//WIDESTRING SAVE
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
procedure SaveWideStringToFile(var ws: widestring; filename: string);
begin
with TFileStream.Create(FILENAME, fmCreate or fmShareDenyWrite) do
try
Write(WS, length(ws));
finally
Free;
end;
end;
b)
Delphi-Quellcode:
//WB_SaveHTMLCode SAVE
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
function WB_SaveHTMLCode(WebBrowser: TWebBrowser; const FileName: TFileName): Boolean;
var
ps: IPersistStreamInit;
fs: TFileStream;
sa: IStream;
begin
ps := WebBrowser.Document as IPersistStreamInit;
fs := TFileStream.Create(FileName, fmCreate);
try
sa := TStreamAdapter.Create(fs, soReference) as IStream;
Result := Succeeded(ps.Save(sa, True));
finally
fs.Free;
end;
end;
Widestring speichern sowie mit dem Stream speichern liefern leider keine gültige
XML Datei.Dieser
Herr hier hatte wohl das selbe Problem.
Ist denn die Problematik so kompliziert heutzutage ?