function TForm1.TreeToXml(mXMLDocument:IXMLDocument;mTreeView:TTreeNode):Boolean;
procedure pTreeToXML(mXMLNode:IXMLNode;mTreeNode:TTreeNode);
var
i,j:integer;
vXMLNode:IXMLNode;
begin
mTreeNode:=mTreeNode.getFirstChild;
while mTreeNode<>nil do
begin
mXMLNode.AddChild(mTreeNode.Text);
If mTreeNode.HasChildren then
{ pTreeToXML(vXMLNode,mTreeNode); ///这段不知道怎么写,请大家帮忙
end;} If mTreeNode.getNextSibling<>nil then
mTreeNode:=mTreeNode.getNextSibling
else
Exit;
end;
end;
var
i:integer;
// Node:TTreeNode;
begin
if not (Assigned(mXMLDocument)and Assigned(TreeView1))then
exit;
while mTreeView<>nil do
begin
CurNode1:=xmlNode.AddChild(mTreeView.Text);
if mTreeView.HasChildren then
pTreeToXML(CurNode1,mTreeView); if mTreeView.getNextSibling<>nil then
mTreeView:=mTreeView.getNextSibling
else
exit;
end;
end;procedure TForm1.Button5Click(Sender: TObject);
var
TN:TTreeNode;
begin
TN:=TreeView1.Selected;
xmlNode:=XMLDocument2.AddChild('CRtprj');
XMLDocument2.Encoding:='GB2312';
TreeToXml(XMLDocument2,TN);
XMLDocument2.SaveToFile('c:\11.xml');
end;
procedure pTreeToXML(mXMLNode:IXMLNode;mTreeNode:TTreeNode);
var
i,j:integer;
vXMLNode:IXMLNode;
begin
mTreeNode:=mTreeNode.getFirstChild;
while mTreeNode<>nil do
begin
mXMLNode.AddChild(mTreeNode.Text);
If mTreeNode.HasChildren then
{ pTreeToXML(vXMLNode,mTreeNode); ///这段不知道怎么写,请大家帮忙
end;} If mTreeNode.getNextSibling<>nil then
mTreeNode:=mTreeNode.getNextSibling
else
Exit;
end;
end;
var
i:integer;
// Node:TTreeNode;
begin
if not (Assigned(mXMLDocument)and Assigned(TreeView1))then
exit;
while mTreeView<>nil do
begin
CurNode1:=xmlNode.AddChild(mTreeView.Text);
if mTreeView.HasChildren then
pTreeToXML(CurNode1,mTreeView); if mTreeView.getNextSibling<>nil then
mTreeView:=mTreeView.getNextSibling
else
exit;
end;
end;procedure TForm1.Button5Click(Sender: TObject);
var
TN:TTreeNode;
begin
TN:=TreeView1.Selected;
xmlNode:=XMLDocument2.AddChild('CRtprj');
XMLDocument2.Encoding:='GB2312';
TreeToXml(XMLDocument2,TN);
XMLDocument2.SaveToFile('c:\11.xml');
end;
- <Menu>
- <MenuItem Caption="文件上传" Link="#">
<SubMenuItem Caption="上传报价文件" Link="##" />
<SubMenuItem Caption="上传协议文件" Link="##" />
<SubMenuItem Caption="上传价格反馈" Link="##" />
</MenuItem>
- <MenuItem Caption="下载文件" Link="#">
<SubMenuItem Caption="下载协议" Link="##" />
<SubMenuItem Caption="下载便函" Link="##" />
<SubMenuItem Caption="下载标准物料号" Link="##" />
</MenuItem>
- <MenuItem Caption="其他下载" Link="#">
<SubMenuItem Caption="下载集团单位清单" Link="##" />
<SubMenuItem Caption="下载上下级单位差异" Link="##" />
<SubMenuItem Caption="下载期初" Link="##" />
</MenuItem>
</Menu>var
TXMLMenuItem:TTreeNode;
IXMLMenu:IXMLNode;
IXMLMenuItem:IXMLNode;
IXMLSubMenuItem:IXMLNode;
begin
XMLTreeView.Items.Clear; InXMLDoc.LoadFromFile(OpenDialog1.FileName);
IXMLMenu:=InXMLDoc.DocumentElement;
IXMLMenuItem:=IXMLMenu.ChildNodes.First; While (IXMLMenuItem<>nil) do
begin
TXMLMenuItem:=XMLTreeView.Items.AddChild(nil,IXMLMenuItem.Attributes['Caption']);
IXMLSubMenuItem:=IXMLMenuItem.ChildNodes.First; while (IXMLSubMenuItem<>nil) do
begin
if IXMLSubMenuItem.NodeName='SubMenuItem' then
XMLTreeView.Items.AddChild(TXMLMenuItem,IXMLSubMenuItem.Attributes['Caption']);
IXMLSubMenuItem:=IXMLSubMenuItem.NextSibling;
end;
IXMLMenuItem:=IXMLMenuItem.NextSibling;
end;大概就是这个意思,我做了一个菜单编辑的东西,就是菜单的内容从XML读,允许保存回去,我截取了一下段,你看看有没有帮助,
这就是个大概的意思,希望对你有帮助。
procedure pXMLToTree(mXMLNode: IXMLNode; mTreeNode: TTreeNode);
var
I: Integer;
vTreeNode: TTreeNode;
begin
if SameText(mXMLNode.NodeName, '#text') then
vTreeNode := mTreeView.Items.AddChild(mTreeNode, mXMLNode.NodeValue)
else vTreeNode := mTreeView.Items.AddChild(mTreeNode, mXMLNode.NodeName);
for I := 0 to mXMLNode.ChildNodes.Count - 1 do
pXMLToTree(mXMLNode.ChildNodes[I], vTreeNode);
end;
var
I: Integer;
begin
Result := False;
if not (Assigned(mXMLDocment) and Assigned(mTreeView)) then Exit;
mTreeView.Items.BeginUpdate;
try
mTreeView.Items.Clear;
for I := 0 to mXMLDocment.ChildNodes.Count - 1 do
pXMLToTree(mXMLDocment.ChildNodes[I], nil);
finally
mTreeView.Items.EndUpdate;
end;
Result := True;
end; { XMLToTree }procedure TForm1.Button1Click(Sender: TObject);
begin
XMLDocument1.LoadFromFile('c:\temp\temp.xml');
XMLToTree(XMLDocument1, TreeView1);
end;