这是读: entpcode:string; xpnode:IxmldomNode; xnode:ixmldomnode; anode:tTreenode; begin entpcode:=node.Stringdata; xpnode:=EntpDoc.documentElement.selectSingleNode('//entp[@entpcode="'+entpcode+'"]'); if (xpnode<>nil)and(xpnode.hasChildNodes)then begin xnode:=xpnode.firstChild; anode:=treeview.Items.AddChild(node,xnode.attributes.item[1].text); anode.StringData:=xnode.attributes.item[0].text; anode.HasChildren:=true; while xnode.Get_nextSibling<>nil do begin xnode:=xnode.nextSibling; anode:=treeview.Items.AddChild(node,xnode.attributes.item[1].text); anode.StringData:=xnode.attributes.item[0].text; end; end; 这是写: var xElem:IxmlDomElement; xNode:IxmlDomNode; ResultStr:string; Node:tfcTreenode; begin xNode:=entpdoc.documentElement.selectSingleNode('//entp[@entpcode="'+fcTV_Entp.Selected.StringData+'"]'); xElem:=entpdoc.createElement('entp'); xElem.setAttribute('entpcode',E_eID.text); xElem.setAttribute('entpname',E_eName.text); xElem.setAttribute('entplevel',''); xElem.setAttribute('xzqh',E_Xzqh.Text); xElem.setAttribute('entptype',copy(CBB_EntpType.Text,1,1)); //showmessage(xDoc.documentElement.xml); xnode.parentnode.insertBefore(xElem,xNode); //entpdoc.documentElement.insertBefore(xElem,xNode); entpdoc.save(Extractfilepath(application.exename)+'\res\postcard.sys'); Node:=fcTV_Entp.Selected; Node:=fcTV_Entp.Items.Insert(Node,E_eName.text); 这是修改: var ResultStr:string; xNode:IxmlDomNode; xdoc:IxmlDomDocument; begin Fselnode:=fcTV_Entp.Selected; xNode:=entpdoc.documentElement.selectSingleNode('//entp[@entpcode="'+fcTV_Entp.Selected.StringData+'"]'); xNode.attributes.item[0].text:=E_eid.Text; xNode.attributes.item[1].text:=E_eName.Text; xNode.attributes.item[3].text:=E_xzqh.Text; xNode.attributes.item[4].text:=copy(CBB_EntpType.Text,1,1); entpdoc.save(Extractfilepath(application.exename)+'\res\postcard.sys'); FselNode.Text:=e_ename.Text;这是删除: xNode:=entpdoc.documentElement.selectSingleNode('//entp[@entpcode="'+fcTV_Entp.Selected.StringData+'"]'); xParentNode:=xNode.parentNode; if xNode.hasChildNodes then begin if messagedlg('要删除节点:"'+fcTV_Entp.Selected.Text+'"及其子节点吗?',mtinformation,[mbyes,mbno],0)=mryes then begin xParentNode.removeChild(xnode); fcTV_Entp.Selected.Delete; end else exit; end else if messagedlg('要删除节点:"'+fcTV_Entp.Selected.Text+'"吗?',mtinformation,[mbyes,mbno],0)=mryes then begin xParentNode.removeChild(xnode); fcTV_Entp.Selected.Delete; end else exit; entpdoc.save(Extractfilepath(application.exename)+'\res\postcard.sys');
delphi交流。欢迎到我的主页上去发表您的高见!
另外 win911(☆洋☆) 兄:如何和csdn的助手联系呢??
就算用ADO 都可以 xml 存档
什么意识阿,你想实现什么方面的功能阿?
xmldocument是个好东西
var
i,colnum : integer;
a : string;
xmlnode,ValueNode : IXMLNode;
begin
xmldocument1.FileName :='paper_stp.xml';
xmldocument1.Active :=true;
xmlnode := XMLDocument1.DocumentElement.AddChild('model');
ValueNode := xmlnode.AddChild('p_lth');ValueNode.text := '280';
ValueNode := xmlnode.AddChild('p_wth');ValueNode.text := '210';
ValueNode := xmlnode.AddChild('m_t');ValueNode.text := '12';
ValueNode := xmlnode.AddChild('m_l');ValueNode.text := '12';
ValueNode := xmlnode.AddChild('m_b');ValueNode.text := '12';
ValueNode := xmlnode.AddChild('m_r');ValueNode.text := '12';
XMLDocument1.SaveToFile('paper_stp.xml') ;
end;
entpcode:string;
xpnode:IxmldomNode;
xnode:ixmldomnode;
anode:tTreenode;
begin
entpcode:=node.Stringdata;
xpnode:=EntpDoc.documentElement.selectSingleNode('//entp[@entpcode="'+entpcode+'"]');
if (xpnode<>nil)and(xpnode.hasChildNodes)then
begin
xnode:=xpnode.firstChild;
anode:=treeview.Items.AddChild(node,xnode.attributes.item[1].text);
anode.StringData:=xnode.attributes.item[0].text;
anode.HasChildren:=true;
while xnode.Get_nextSibling<>nil do
begin
xnode:=xnode.nextSibling;
anode:=treeview.Items.AddChild(node,xnode.attributes.item[1].text);
anode.StringData:=xnode.attributes.item[0].text;
end;
end;
这是写:
var
xElem:IxmlDomElement;
xNode:IxmlDomNode;
ResultStr:string;
Node:tfcTreenode;
begin
xNode:=entpdoc.documentElement.selectSingleNode('//entp[@entpcode="'+fcTV_Entp.Selected.StringData+'"]');
xElem:=entpdoc.createElement('entp');
xElem.setAttribute('entpcode',E_eID.text);
xElem.setAttribute('entpname',E_eName.text);
xElem.setAttribute('entplevel','');
xElem.setAttribute('xzqh',E_Xzqh.Text);
xElem.setAttribute('entptype',copy(CBB_EntpType.Text,1,1));
//showmessage(xDoc.documentElement.xml);
xnode.parentnode.insertBefore(xElem,xNode);
//entpdoc.documentElement.insertBefore(xElem,xNode);
entpdoc.save(Extractfilepath(application.exename)+'\res\postcard.sys');
Node:=fcTV_Entp.Selected;
Node:=fcTV_Entp.Items.Insert(Node,E_eName.text);
这是修改:
var
ResultStr:string;
xNode:IxmlDomNode;
xdoc:IxmlDomDocument;
begin
Fselnode:=fcTV_Entp.Selected;
xNode:=entpdoc.documentElement.selectSingleNode('//entp[@entpcode="'+fcTV_Entp.Selected.StringData+'"]'); xNode.attributes.item[0].text:=E_eid.Text;
xNode.attributes.item[1].text:=E_eName.Text;
xNode.attributes.item[3].text:=E_xzqh.Text;
xNode.attributes.item[4].text:=copy(CBB_EntpType.Text,1,1);
entpdoc.save(Extractfilepath(application.exename)+'\res\postcard.sys'); FselNode.Text:=e_ename.Text;这是删除:
xNode:=entpdoc.documentElement.selectSingleNode('//entp[@entpcode="'+fcTV_Entp.Selected.StringData+'"]');
xParentNode:=xNode.parentNode;
if xNode.hasChildNodes then
begin
if messagedlg('要删除节点:"'+fcTV_Entp.Selected.Text+'"及其子节点吗?',mtinformation,[mbyes,mbno],0)=mryes then
begin
xParentNode.removeChild(xnode);
fcTV_Entp.Selected.Delete;
end
else exit;
end
else if messagedlg('要删除节点:"'+fcTV_Entp.Selected.Text+'"吗?',mtinformation,[mbyes,mbno],0)=mryes then
begin
xParentNode.removeChild(xnode);
fcTV_Entp.Selected.Delete;
end
else exit;
entpdoc.save(Extractfilepath(application.exename)+'\res\postcard.sys');
如果是写写代码,我还是会写的....
大家都知道,XML还是比较~~~的吧,而我们做Delphi的人呢,对数据库了解的往往多一点,我想和大家交流一下,Delphi中XML操作的相对优点和缺点,大家不妨谈谈自己的心得啊!
请赐教