点击treeview中的节点可以在一个memo中显示该节点的相关属性,我现在希望把节点和其属性全部存成xml格式的文件中,应该怎样写代码?
解决方案 »
- 千分散去还复来,有分咱就散着玩!
- 高分求进度条控件开发方法
- 关于ViewStyle为vsReport的TListView的标题头
- 问一个比较弱智的问题?不知道是我弱智还是计算机系统弱智。
- 输入字母或汉字,如何调出有该字母或汉字显示的商品窗体进行选择?
- 是高手的进来!
- 请教为什么用delphi编译后生成的exe文件总是提示有病毒
- TNMSTP发送Email(带有4兆的附件)时出现512k太大,不知道是什么原因,怎么解决?
- ####有关参数传递的问题#####
- 高分求助,为什么Windows窗口上的... UP有分。
- ADO访问ORACLE数据库出现只能显示小数点后4位有效数字的问题!
- 一个简单的Canvas小问题,希望大家帮帮忙啊
var
AXMLNode: IXMLNode;
ATreeNode: TTreeNode;
begin
AXMLNode := XMLNode;
while Assigned(AXMLNode) do
begin
ATreeNode := TreeNode.Items.Add(AXMLNode.NodeValue);
ParseXML(AXMLRoot.ChildNodes.First, ATreeNode);
AXMLNode := AXMLNode.NextSibling;
end;
end;parseXML(AXMLDocument.Node.ChildNodes.FindNode(XML_ROOT), ATreeRoot);
var
ATreeNode: TTreeNode;
AXMLNode: IXMLNode;
begin
ATreeNode:= TreeNode;
while Assigned(ATreeNode) do
begin
AXMLNode := AXMLRoot.AddChild(ATreeNode.Text);
if ATreeNode.HasChild then
ParseXML(AXMLNode, ATreeNode.Items.GetFirstNode);
ATreeNode:= ATreeNode.NextSibling;
end;
end;
我试一下先!
难道xml文件的格式不需要自己定义的吗?
ParseXML是用来干什么的啊!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, xmldom, XMLIntf, msxmldom, XMLDoc;type
TForm1 = class(TForm)
TreeView1: TTreeView;
Button1: TButton;
XMLDocument1: TXMLDocument;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
procedure XMLToTree(XMLNode:IXMLNode; ParentNode:TTreeNode; TV:TTreeView);
procedure TreeToXML(TreeNode:TTreeNode; ParentNode:IXMLNode);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.XMLToTree(XMLNode:IXMLNode; ParentNode:TTreeNode; TV:TTreeView);
var
i:integer;
Node: TTreeNode;
begin
Node := TV.Items.AddChild(ParentNode,XMLNode.NodeName);
for i := 0 to XMLNode.AttributeNodes.Count - 1 do
TV.Items.AddChild(Node,XMLNode.AttributeNodes[i].NodeName
+ '=' + XMLNode.AttributeNodes[i].NodeValue);
//属性值以NAME=VALUE格式存储到TREEVIEW中
for i:=0 to XMLNode.ChildNodes.Count-1 do
XMLToTree(XMLNode.ChildNodes[i], Node, TV);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
XMLDocument1.FileName := 'E:\tmp\test.xml';
XMLDocument1.Active := True;
TreeView1.Items.Clear;
XMLToTree(XMLDocument1.DocumentElement, nil, TreeView1);
TreeView1.FullExpand;
end;procedure TForm1.TreeToXML(TreeNode:TTreeNode; ParentNode:IXMLNode);
var
i:integer;
Node: IXMLNode;
Name, Value: String;
begin
if ParentNode = Nil then
Node := XMLDocument1.AddChild(TreeNode.Text)
else
Node := ParentNode.AddChild(TreeNode.Text);
for i := 0 to TreeNode.Count - 1 do
if Pos('=', TreeNode[i].Text) > 0 then
begin
//如果TV的NODE中有"=",则说明该结点为属性值
Name := Copy(TreeNode[i].Text, 1, Pos('=', TreeNode[i].Text) - 1);
Value := Copy(TreeNode[i].Text, Pos('=', TreeNode[i].Text) + 1,
Length(TreeNode[i].Text) - Pos('=', TreeNode[i].Text));
Node.SetAttributeNS(Name, '=', Value);
end else
begin
//否则是子结点
TreeToXML(TreeNode[i], Node);
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
XMLDocument1.ChildNodes.Clear;
XMLDocument1.Encoding := 'GB2312';
TreeToXML(TreeView1.Items[0], Nil);
XMLDocument1.SaveToFile('E:\tmp\test2.xml');
end;end.
<DSTreeRoot text="地球" open="true" href="http://" target="box" treeId="0">
<DSTree text="中国" open="true" href="http://" target="box" treeId="00">
<DSTree text="湖北" open="false" href="http://" target="box" treeId="000">
<DSTree text="武汉" open="false" href="http://" target="box" treeId="0000"/>
<DSTree text="黄石" open="false" href="http://" target="box" treeId="0001"/>
<DSTree text="宜昌" href="http://" icon="earth.gif" target="box" treeId="0123"/>
<DSTree text="十堰" open="false" href="http://十堰" target="box" treeId="0002">
<DSTree text="城区" open="false" href="http://城区" target="box" treeId="00020">
<DSTree text="人民路" open="false" href="http://人民路" target="box" treeId="000200"/>
<DSTree text="公园" open="false" href="http://" target="box" treeId="000201"/>
<DSTree text="电脑城" open="false" href="http://" target="box" treeId="000202"/>
</DSTree>
</DSTree>
</DSTree>
<DSTree text="湖南" open="true" href="http://" target="box" treeId="001">
<DSTree text="岳阳" open="false" href="http://" target="box" treeId="0011">
<DSTree text="青海" open="true" href="http://" target="box" treeId="002">
<DSTree text="平安" open="false" href="http://" target="box" treeId="0020"/>
<DSTree text="玉树" open="false" href="http://" target="box" treeId="0021"/>
</DSTree>
</DSTree>
<DSTree text="长沙" open="false" href="http://" target="box" treeId="0010"/>
</DSTree>
</DSTree>
<DSTree text="外国" open="true" treeId="01">
<DSTree text="日本" open="false" href="http://" target="box" treeId="011">
<DSTree text="广岛" href="http://" target="box" treeId="0110" open="false">
<DSTree text="东京" href="http://" target="box" treeId="0111"/>
</DSTree>
</DSTree>
<DSTree text="韩国" href="http://" target="box" treeId="010" open="true"/>
<DSTree text="美国" open="false" href="http://" target="box" treeId="012">
<DSTree text="纽约" href="http://" target="box" treeId="0120"/>
<DSTree text="华盛顿" href="http://" target="box" treeId="0121"/>
</DSTree>
</DSTree>
</DSTreeRoot>