我在我的Delphi和.Net C#测试项目中使用WebBrowser控件导航到本地测试XML文件,并尝试将内容保存回.Net DocumentCompleted事件和Delphi onNavigateComple2事件中的XML文件.
问题是我总是得到HTML,它将被浏览器转换为查看(检查我的输出:我使用以下代码保存了它)
procedure TForm1.SaveHTMLSourceToFile(const FileName: string;
WB: TWebBrowser);
var
PersistStream: IPersistStreamInit;
FileStream: TFileStream;
Stream: IStream;
SaveResult: HRESULT;
begin
PersistStream := WB.Document as IPersistStreamInit;
FileStream := TFileStream.Create(FileName, fmCreate);
try
Stream := TStreamAdapter.Create(FileStream, soReference) as IStream;
SaveResult := PersistStream.Save(Stream, True);
if FAILED(SaveResult) then
MessageBox(Handle, 'Fail to save source', 'Error', 0);
finally
FileStream.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
好吧,我已经尝试了几乎所有东西,到处搜索,但到目前为止找不到任何有用的东西.使用下面的Delphi代码我可以显示SOURCE的工作原理(这意味着源代码在那里)但是我不能使用它,因为它会播放一个对话框并且不容易获取数据并关闭该对话框(在我的测试用例中)我得到带有我的xml内容的notepad.exe)
AWebBrowser.Document.QueryInterface(IOleCommandTarget, CmdTarget) ;
if CmdTarget <> nil then
try
CmdTarget.Exec(PtrGUID, HTMLID_VIEWSOURCE, 0, vaIn, vaOut) ;
finally
CmdTarget._Release;
end;
Run Code Online (Sandbox Code Playgroud)
我也设法调用SAVE AS呼叫与XXX-HIDE-XXX标志,但它接缝了IE 5另存为对话框将显示(Hide标志将被忽略).
我还试图从缓存中获取XML数据(缓存API)但在我的情况下我不会得到任何东西2.如果在客户机器上缓存被禁用怎么办?;-) …
我只是想编写一个多部分解析器,但事情变得复杂,并想知道是否有人知道C#中的现成解析器!
为了说清楚,我正在编写自己的"小"http服务器,并且需要解析多部分表单数据!
在此先感谢Gohlool
我要将双倍转换为10位+ 4位小数.
所以说:我有一个双999,56.我要00000009995600 - >没有逗号!
我有的是:
string.format("{0:0000000000.0000}",value)但我得到的是:0000000999,5600
所以我现在可以做的是搜索逗号并删除它,但我想知道在这种特定格式中是否还有另一种"干净"的格式化方式?
谢谢!