首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >更改TXMLDocument.SaveToFile的行为

更改TXMLDocument.SaveToFile的行为
EN

Stack Overflow用户
提问于 2019-04-15 00:26:32
回答 1查看 269关注 0票数 0

在生产中,我们有时会遇到“拒绝访问”类型的异常。调用堆栈来自此行

VXML.SaveToFile(文件名);

其中vXML是IXMLDocument。

这里的问题是没有记录文件名。我试过这个小测试程序。

代码语言:javascript
复制
implementation

uses
  xmldoc, Unit12;

{$R *.dfm}

procedure TForm11.FormShow(Sender: TObject);
const
  cnFile = 'C:\Program Files (x86)\test.xml';
var
  vXML: TAttracsXMLDoc;
begin
  vXML := TAttracsXMLDoc.Create(nil);
  try
    vXML.Active := True;
    // Process vXML
    vXML.SaveToFile(cnFile);
  finally
    vXML.Free;
  end;
end;

和其他单元

代码语言:javascript
复制
unit Unit12;

interface

uses
  xmldoc,
  xml.xmldom,
  Xml.XMLIntf;

type
  TAttracsXMLDoc = class(TXMLDocument)
    procedure SaveToFile(const AFileName: DOMString); override;
  end;

implementation

uses
  Sysutils;

procedure TAttracsXMLDoc.SaveToFile(const AFileName: DOMString);
begin
  try
    inherited SaveToFile(AFileName);
  except
    on E: Exception do
    begin
      E.Message := E.Message + ' ' + AFileName + ' cannot be saved';
      raise;
    end;
  end;
end;

end.

它按预期工作。但问题是IXMLDocument接口已经不再使用了。我想使用这样的代码:

代码语言:javascript
复制
procedure TForm11.FormShow(Sender: TObject);
const
  cnFile = 'C:\Program Files (x86)\test.xml';
var
  vXML: IXMLDocument;
begin
  vXML := NewXMLDocument;
  // Process vXML
  vXML.SaveToFile(cnFile);
end;

在对现有代码进行最少更改的情况下,捕获上面的异常,并清楚地指出错误的原因。最佳路径是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-15 01:54:02

只需用TAttracsXMLDoc替换NewXMLDocument(),你就会得到你想要的行为:

代码语言:javascript
复制
function NewAttracsXMLDocument: IXMLDocument;
begin
  Result := TAttracsXMLDoc.Create(nil);
end;

procedure TForm11.FormShow(Sender: TObject);
const
  cnFile = 'C:\Program Files (x86)\test.xml';
var
  vXML: IXMLDocument;
begin
  vXML := NewAttracsXMLDocument; //NewXMLDocument;
  // Process vXML
  vXML.SaveToFile(cnFile);
end;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55677510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档