求助如何动态创建TXMLDocument并使用

tjs_125 2012-06-20 11:12:05
我想在一个继承与TObject的类中动态创建TXMLDocument,但是了总是出错,请大家指点,代码如下:
var 
Axml: TXMLDocument;
xn: IXMLNode;
begin
Axml := TXMLDocument.Create(nil);
try
Axml.LoadFromFile('c:\123.xml');
Axml.Active := true;
xn := Axml.DocumentElement; // 这一句总是出错,过不了,Access violation错误。
// 其他代码.....
finally

Axml := nil; // 这里如果用 Axml.Free 也是会出错
end;

我知道在Create创建时指定一个TComponent子类是可以的,比如在窗体中的话可以使用self,但是这里面没有办法这样,请高手指点一下,该怎么做?
...全文
96 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjs_125 2012-06-21
  • 打赏
  • 举报
回复
谢谢2楼的答复,现在可以了,IXMLDocument与TXMLDocument的一字之差,我没有注意。
shuihan20e 2012-06-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
我想在一个继承与TObject的类中动态创建TXMLDocument,但是了总是出错,请大家指点,代码如下:

Delphi(Pascal) code
var
Axml: TXMLDocument; //类型错误
xn: IXMLNode;
begin
Axml := TXMLDocument.Create(nil);
try
Axml.LoadFromFile('c……
[/Quote]
应该是IXMLDocument;
kaikai_kk 2012-06-21
  • 打赏
  • 举报
回复
finally后应该用Free或者FreeAndnil;
kaikai_kk 2012-06-21
  • 打赏
  • 举报
回复
也可以用TXMLDocument.Create(Application);
bdmh 2012-06-21
  • 打赏
  • 举报
回复
这样可以的

var
Axml: TXMLDocument;
xn: IXMLNode;
DocIntf : IXMLDocument;
begin
Axml := TXMLDocument.Create(nil);
DocIntf := Axml;
try
Axml.LoadFromFile('c:\xx.xml');
Axml.Active := true;
xn := Axml.DocumentElement;
finally

Axml := nil;
DocIntf := nil
end;
end;
tjs_125 2012-06-20
  • 打赏
  • 举报
回复
我的使用delphi 7,下面的网址里面有说到这个内容,但是方法我试了没办法解决我的问题,
http://www.cnblogs.com/cardon/archive/2010/03/07/1680190.html

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧