请问如何修改XML中的内容?(100分)

  • 主题发起人 主题发起人 lkm.424
  • 开始时间 开始时间
L

lkm.424

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何修改XML中的内容?
 
最简单的是用ADO数据集读取进来,像一般的数据表一样添加删除修改,然后在保存下来!
 
用clientdataset控件也可以.clientdataset.loadfromfile(). 修改后,clientdataset.savetofile().
 
lkm.424 有: 14个待答问题, 11个已答问题, 回答了: 52 个问题。 富翁笔记
 
我也是按照royal1442这样的思路作的.可是我用ADOQuery操作提示我没有连接,我的ADOConnection连接的是数据库 ,这样就成了直接操作数据库而不是XML了
 
royal1442查我档案了 本人才疏学浅 请赐教
 
一个人的很多素质和是否才疏学浅无关!
 
这成绩算啥!
我看过有人173个待答,0个已答,回答了0个的!
不过我还是建议楼主使用TXMLDocument,用法也比较简单,查查资料吧,本来这类问题查一下资料就可以解决。
 
我可不想每次回答问题之前,还要审核一下楼主的信誉度!
强烈建议斑竹添加此功能!
 
非常感谢royal1442提出的批评,在这里我向大家诚恳的道歉.我会另外开贴向所有帮助过的我富翁们道歉的 .再次感谢royal1442
 
别那么客气,以后注意一些就行了!毕竟别人也为你的问题做了努力!
 
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, xmldom, XMLIntf, msxmldom, XMLDoc;
type
TForm1 = class(TForm)
mmo1: TMemo;
btnCreateXML: TButton;
edt1: TEdit;
XMLDoc1: TXMLDocument;
btnReadXML: TButton;
btnSetAttr: TButton;
btnReadAttribute: TButton;
btnDelNode: TButton;
procedure btnCreateXMLClick(Sender: TObject);
procedure btnReadXMLClick(Sender: TObject);
procedure btnSetAttrClick(Sender: TObject);
procedure btnReadAttributeClick(Sender: TObject);
procedure btnDelNodeClick(Sender: TObject);
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnCreateXMLClick(Sender: TObject);
var
aNode, aValueNode: IXMLNode;
wStr: widestring;
begin
//创建XML文件
with XMLDoc1.XMLdo
begin
Add('<?xml version=&quot;1.0&quot;
standalone=&quot;yes&quot;?>');
Add('<DFW>');
Add('<savenight>');
Add('<name>savenight</name>');
Add('<sex>man</sex>');
Add('</savenight>');
Add('</DFW>');
end;
XMLDoc1.Active := true;
XMLDoc1.SaveToFile('test.xml');
//WRITE
aNode := XMLDoc1.DocumentElement.AddChild('xiey');
aValueNode := aNode.AddChild('name');
aValueNode.Text := 'xiey';
aValueNode := aNode.AddChild('sex');
aValueNode.Text := 'man or woman?';
//READ
aNode := XMLDoc1.DocumentElement.ChildNodes[1];
wStr := aNode.ChildNodes['name'].Text;
ShowMessage('xiey'' name is :' + wStr);
wStr := aNode.ChildNodes['sex'].Text;
ShowMessage('xiey'' sex is :' + wStr);
end;

procedure TForm1.btnSetAttrClick(Sender: TObject);
//设置属性
var
aNode, aValueNode: IXMLNode;
wStr: WideString;
i, j: Integer;
begin
xmldoc1.LoadFromfile('test.xml');
aNode := XMLDoc1.DocumentElement.AddChild('Happy');
with aNodedo
begin
NodeValue := 'Have fun';
SetAttributeNS('Attr', '', 'attrValue');
SetAttributeNS('BodyColor', '', 'Black');
SetAttributeNS('Age', '', 12);
end;

// aNode.AddChild('HappyChild');
// anode.ChildNodes[0].NodeValue:='I am Happy child';
XMLDoc1.DocumentElement.AddChild('WhyNot');
XMLDoc1.SaveToFile('test.xml');
end;

procedure TForm1.btnReadXMLClick(Sender: TObject);
//读取XML文件
var
aNode, aValueNode: IXMLNode;
wStr: widestring;
i, j: Integer;
begin
XMLDoc1.LoadFromFile('TEST.XML');
for i := 0 to XMLDoc1.DocumentElement.ChildNodes.count - 1do
begin
aNode := XMLDoc1.DocumentElement.ChildNodes;
if aNode.HasChildNodes = false then
mmo1.Lines.Add(aNode.NodeName);
for j := 0 to XMLDoc1.DocumentElement.ChildNodes.ChildNodes.Count - 1do
begin
aNode := XMLDoc1.DocumentElement.ChildNodes.ChildNodes[j];
if aNode.NodeName = 'name' then
mmo1.lines.Add(aNode.NodeName + ' : ' + aNode.NodeValue);
end;
end;
end;

procedure TForm1.btnReadAttributeClick(Sender: TObject);
//读取属性
var
i, j: Integer;
aNode, aValueNode: IXMLNode;
begin
mmo1.Clear;
xmldoc1.LoadFromFile('yes.xml');
XMLDoc1.Active;
j := xmlDoc1.DocumentElement.ChildNodes.Count - 1;
// ShowMessage(IntToStr(j) + ':' + xmlDoc1.DocumentElement.NodeName);
for i := 0 to jdo
begin
aNode := xmlDoc1.DocumentElement.ChildNodes;
if aNode.NodeType = ntElement then
begin
avaluenode := aNode;
with mmo1.Linesdo
begin
Add(avalueNode.NodeName);
add(aNode.Attributes['Name']);
Add(aNode.Attributes['ServerName']);
Add(aNode.Attributes['UserName']);
Add(aNode.Attributes['Password']);
Add(aNode.Attributes['Trusted']);
Add('---------------------------');
end;
end;
end;
XMLDoc1.Active := false;
end;

procedure TForm1.btnDelNodeClick(Sender: TObject);
//删除指定节点
begin
xmldoc1.LoadFromFile('yes.xml');
xmlDoc1.DocumentElement.ChildNodes.Delete(edt1.text);
XMLDoc1.SaveToFile('yes.xml');
btnReadAttributeClick(Sender);
end;
end.
----------Yes.xml内容如下---------------------
<?xml version=&quot;1.0&quot;
standalone=&quot;yes&quot;?>
<eLibrary>
<Profiw Name=&quot;Dfjphi&quot;
ServerName=&quot;(losfsdfscal)&quot;
UserName=&quot;safa&quot;
Password=&quot;EncrytPassword&quot;
Trusted=&quot;TRUE&quot;/>
<Profie Name=&quot;Dhfphi&quot;
ServerName=&quot;(lsdfsdocal)&quot;
UserName=&quot;sga&quot;
Password=&quot;Enc&quot;
Trusted=&quot;TRUE&quot;/>
<Profir Name=&quot;Dfgphi&quot;
ServerName=&quot;(lofsdfcal)&quot;
UserName=&quot;sga&quot;
Password=&quot;Ensword&quot;
Trusted=&quot;TRUE&quot;/>
</eLibrary>
 
多人接受答案了。
 
后退
顶部