CreateNode的用法,急

prolazy 2006-05-11 01:13:53
生成XML用的,用的是txmldocument组件,定义的节点是ixmlnode
本来的用的addchild()语句,但是有参数错误
delphi的帮助里面有:
AddChild only adds element nodes. To add other types of child nodes, use the XML document CreateNode method instead, and then add the resulting node to the ChildNodes property array.
我想用createnode来代替

result := query.fieldbyname('data1').asstring;
后的 语句
dNode:=cNode.AddChild(result);
应该怎磨做?
...全文
127 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
postren 2006-05-11
  • 打赏
  • 举报
回复
unit UXMLDocument;

interface

uses
XMLIntf, XMLDoc;

type
TMyXMLDocument = class(TXMLDocument)
public
function GetNodeValue(NodeName: array of WideString;
const DefValue: OleVariant): OleVariant;
procedure SetNodeValue(NodeName: array of WideString;
const Value: OleVariant);
end;

implementation

{ TMyXMLDocument }

function TMyXMLDocument.GetNodeValue(NodeName: array of WideString;
const DefValue: OleVariant): OleVariant;
//==============================================================================
// Function: 获得节点值,如果节点不存在,则返回默认值DefValue
//Parameters: NodeName表示多级节点名称,DefValue表示如果节点不存在的返回值
// Result: 节点内容
//==============================================================================
var
I: Integer;
Root: IXMLNode;
begin
Result := DefValue;
if DocumentElement = nil then Exit;
Root := DocumentElement;
for I := 0 to Length(NodeName) -1 do
begin
if Root = nil then Break;
Root := Root.ChildNodes.FindNode(NodeName[I]);
end;
if Root <> nil then
Result := Root.NodeValue;
end;

procedure TMyXMLDocument.SetNodeValue(NodeName: array of WideString;
const Value: OleVariant);
//==============================================================================
// Function: 设置节点内容,如果节点不存在,则创建节点;如果根节点不存在,则不进
// 行任何操作
//Parameters: NodeName表示多级节点名称,Value表示节点值
//==============================================================================
var
I: Integer;
Root, Root2: IXMLNode;
begin
if DocumentElement = nil then Exit;
Root := DocumentElement;
for I := 0 to Length(NodeName) -1 do
begin
Root2 := Root.ChildNodes.FindNode(NodeName[I]);
if Root2 = nil then
Root2 := Root.AddChild(NodeName[I]);
Root := Root2;
end;
Root.NodeValue := Value;
end;

end.

下面是一个例子,该例子保存窗体的位置
-------------------
const
SettingFileName = 'setting.xml';

procedure TfrmMain.FormCreate(Sender: TObject);
var
XML: TMyXMLDocument;
begin
XML := TMyXMLDocument.Create(Application);
XML.Options := [doNodeAutoCreate,doNodeAutoIndent,doAttrNull,doAutoPrefix,doNamespaceDecl];
try
if FileExists(SettingFileName) then
XML.LoadFromFile(SettingFileName)
else
begin
XML.Active := True;
XML.Create(SettingFileName);
XML.AddChild('Setting', '1.0');
XML.SaveToFile(SettingFileName);
end;
Width := XML.GetNodeValue([Name, 'Width'], Width);
Height := XML.GetNodeValue([Name, 'Height'], Height);
Top := XML.GetNodeValue([Name, 'Top'], Top);
Left := XML.GetNodeValue([Name, 'Left'], Left);
finally
XML.Free;
end;
end;

procedure TfrmMain.FormDestroy(Sender: TObject);
var
XML: TMyXMLDocument;
begin
XML := TMyXMLDocument.Create(Application);
XML.Options := [doNodeAutoCreate,doNodeAutoIndent,doAttrNull,doAutoPrefix,doNamespaceDecl];
try
if FileExists(SettingFileName) then
XML.LoadFromFile(SettingFileName)
else
begin
XML.Active := True;
XML.Create(SettingFileName);
XML.AddChild('Setting', '1.0');
end;
XML.SetNodeValue([Name, 'Width'], Width);
XML.SetNodeValue([Name, 'Height'], Height);
XML.SetNodeValue([Name, 'Top'], Top);
XML.SetNodeValue([Name, 'Left'], Left);
XML.SaveToFile(SettingFileName);
finally
XML.Free;
end;
end;
又迎来minggeJS1.7的更新,感谢GIT贡献者提交的BUG,1.6BUG较多,因为当时写得比较,目前已经大致修复! minggeJS新增了JSONP,attr()等许多还没及时写上的API,以及优化部份函数等 欢迎大家也到我GIT贡献一下,让我能及时修复更新! 上一次发的1.6版本,并没有介绍到minggeJS的优点,所以很多人只围绕着我山寨JQUERY装逼没前途咬着不放, 我说过minggeJS的梦想要夺取JQ百分之50的份额,这话我能写得出,就不会收回,即管失败了我也没损失。 JQUERY又不会因为我要挑战他而大怒,失败就失败,又不是没试过! 我还山寨angularjs,开发进度到了百之20左右,我到时候又要开源了。对手多强大我压根不屑,挑战就挑战! 下面我介绍一下minggeJS几大优点。 minggeJS具有以下优点 1:选择器执行速度胜出JQUERY, 以十万个DIV节点测试,分别用minggeJS与JQUERY选择器取出指定节点测试: JQUERY结果 : IE7以上:花时1800毫秒 IE7 花时 8135毫秒 IE6 花时超过30-40秒之间,浏览器随机卡死。 minggeJS结果: IE7以上:花时1500毫秒 IE7花时 5132毫秒 IE6花时 23-35秒之间 浏览器也有卡死现象,但次数少。 花时越少,选择器性能越强,从结果来看,minggeJS大获全胜。 司徒正美也开发了一个号称世界最快的选择器,我也测试了下,从结果来看和我不分上下的! 还有一点值得提提,居闻JQUERY的选择器不是自己公司原创的,是用第三方选择器改出来的!minggeJS的选择器问心无愧地说全部是我原创开发的 2:众所周之,JQUERY的动画原理是采用定时器方原理,minggeJS原理不同,minggeJS的动画采用的是CSS3过渡原理,遗憾的是minggeJS的动画不支持IE678。 minggeJS并不是第一个采用CSS3过渡动画,zepto的动画也是采用这个原理,可惜zepto动画做得真心差,zepto是不支持串联式动画的,用zepto做复杂动画,简直是一大败笔。 minggeJS则支持动画串联,支持高效准确回调,支持接口查询是否正在动画等,可以告诉大家用minggeJS做手机动画,绝对是最佳的选择! 3:语法,函数用法,函数名称,都与JQUERY一致,只要会JQUERY,你就会更用minggeJS,易学易用,马上上手。部份函数用法稍有不同,例如mingge新建节点是用$(XX).createNode(),比JQUERY方便很多! minggeJS不单单是山寨JQUERY,更多的是融入了自己的思想,想法! 4:文件体积20K左右,后期升级可能会维持在40K左右,我自己的想法就是希望不超过40K。 5: minggeJS后期的发展,更多是想往手机端发展,即管战不胜JQUERY,能战胜zepto也是赏心悦目的事。再者就是动画方面,打算采用两种模式供用户选择,1种是CSS3,另一种CSS2定时器方式,定时器方式,估计以插件方式发布!
又迎来minggeJS1.7的更新,感谢GIT贡献者提交的BUG,1.6BUG较多,因为当时写得比较,目前已经大致修复! minggeJS新增了JSONP,attr()等许多还没及时写上的API,以及优化部份函数等 欢迎大家也到我GIT贡献一下,让我能及时修复更新! 上一次发的1.6版本,并没有介绍到minggeJS的优点,所以很多人只围绕着我山寨JQUERY装逼没前途咬着不放, 我说过minggeJS的梦想要夺取JQ百分之50的份额,这话我能写得出,就不会收回,即管失败了我也没损失。 JQUERY又不会因为我要挑战他而大怒,失败就失败,又不是没试过! 我还山寨angularjs,开发进度到了百之20左右,我到时候又要开源了。对手多强大我压根不屑,挑战就挑战! 下面我介绍一下minggeJS几大优点。 minggeJS具有以下优点 1:选择器执行速度胜出JQUERY, 以十万个DIV节点测试,分别用minggeJS与JQUERY选择器取出指定节点测试: JQUERY结果 : IE7以上:花时1800毫秒 IE7 花时 8135毫秒 IE6 花时超过30-40秒之间,浏览器随机卡死。 minggeJS结果: IE7以上:花时1500毫秒 IE7花时 5132毫秒 IE6花时 23-35秒之间 浏览器也有卡死现象,但次数少。 花时越少,选择器性能越强,从结果来看,minggeJS大获全胜。 司徒正美也开发了一个号称世界最快的选择器,我也测试了下,从结果来看和我不分上下的! 还有一点值得提提,居闻JQUERY的选择器不是自己公司原创的,是用第三方选择器改出来的!minggeJS的选择器问心无愧地说全部是我原创开发的 2:众所周之,JQUERY的动画原理是采用定时器方原理,minggeJS原理不同,minggeJS的动画采用的是CSS3过渡原理,遗含的是minggeJS的动画不支持IE678。 minggeJS并不是第一个采用CSS3过渡动画,zepto的动画也是采用这个原理,可惜zepto动画做得真心差,zepto是不支持串联式动画的,用zepto做复杂动画,简直是一大败笔。 minggeJS则支持动画串联,支持高效准确回调,支持接口查询是否正在动画等,可以告诉大家用minggeJS做手机动画,绝对是最佳的选择! 3:语法,函数用法,函数名称,都与JQUERY一致,只要会JQUERY,你就会更用minggeJS,易学易用,马上上手。部份函数用法稍有不同,例如mingge新建节点是用$(XX).createNode(),比JQUERY方便很多! minggeJS不单单是山寨JQUERY,更多的是融入了自己的思想,想法! 4:文件体积20K左右,后期升级可能会维持在40K左右,我自己的想法就是希望不超过40K。 5: minggeJS后期的发展,更多是想往手机端发展,即管战不胜JQUERY,能战胜zepto也是赏心悦目的事。再者就是动画方面,打算采用两种模式供用户选择,1种是CSS3,另一种CSS2定时器方式,定时器方式,估计以插件方式发布!
又迎来minggeJS1.7的更新,感谢GIT贡献者提交的BUG,1.6BUG较多,因为当时写得比较,目前已经大致修复! minggeJS新增了JSONP,attr()等许多还没及时写上的API,以及优化部份函数等 欢迎大家也到我GIT贡献一下,让我能及时修复更新! 上一次发的1.6版本,并没有介绍到minggeJS的优点,所以很多人只围绕着我山寨JQUERY装逼没前途咬着不放, 我说过minggeJS的梦想要夺取JQ百分之50的份额,这话我能写得出,就不会收回,即管失败了我也没损失。 JQUERY又不会因为我要挑战他而大怒,失败就失败,又不是没试过! 我还山寨angularjs,开发进度到了百之20左右,我到时候又要开源了。对手多强大我压根不屑,挑战就挑战! 下面我介绍一下minggeJS几大优点。 minggeJS具有以下优点 1:选择器执行速度胜出JQUERY, 以十万个DIV节点测试,分别用minggeJS与JQUERY选择器取出指定节点测试: JQUERY结果 : IE7以上:花时1800毫秒 IE7 花时 8135毫秒 IE6 花时超过30-40秒之间,浏览器随机卡死。 minggeJS结果: IE7以上:花时1500毫秒 IE7花时 5132毫秒 IE6花时 23-35秒之间 浏览器也有卡死现象,但次数少。 花时越少,选择器性能越强,从结果来看,minggeJS大获全胜。 司徒正美也开发了一个号称世界最快的选择器,我也测试了下,从结果来看和我不分上下的! 还有一点值得提提,居闻JQUERY的选择器不是自己公司原创的,是用第三方选择器改出来的!minggeJS的选择器问心无愧地说全部是我原创开发的 2:众所周之,JQUERY的动画原理是采用定时器方原理,minggeJS原理不同,minggeJS的动画采用的是CSS3过渡原理,遗含的是minggeJS的动画不支持IE678。 minggeJS并不是第一个采用CSS3过渡动画,zepto的动画也是采用这个原理,可惜zepto动画做得真心差,zepto是不支持串联式动画的,用zepto做复杂动画,简直是一大败笔。 minggeJS则支持动画串联,支持高效准确回调,支持接口查询是否正在动画等,可以告诉大家用minggeJS做手机动画,绝对是最佳的选择! 3:语法,函数用法,函数名称,都与JQUERY一致,只要会JQUERY,你就会更用minggeJS,易学易用,马上上手。部份函数用法稍有不同,例如mingge新建节点是用$(XX).createNode(),比JQUERY方便很多! minggeJS不单单是山寨JQUERY,更多的是融入了自己的思想,想法! 4:文件体积20K左右,后期升级可能会维持在40K左右,我自己的想法就是希望不超过40K。 5: minggeJS后期的发展,更多是想往手机端发展,即管战不胜JQUERY,能战胜zepto也是赏心悦目的事。再者就是动画方面,打算采用两种模式供用户选择,1种是CSS3,另一种CSS2定时器方式,定时器方式,估计以插件方式发布!

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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