2008年4月15日星期二

XML 文档

XML 文档的节点是标准的树形结构,可以通过递归或者回溯算法来遍历所有的节点。
本例使用递归算法为例,制作了2个遍历 XML 文档的例子。
第一个例子,给出一个 XML 节点,遍历所有子节点-不包括起始节点。
第二个例子,给出一个 XML 节点,遍历所给的节点及其下属的所有子节点。
以上2个示例均列举出了 XML 文档的标签属性和文本值,是比较完整的示例代码。




Windows频道
www.why100000.com/_windows


代码实验室
http://lab.why100000.com


电脑学习社区
http://bbs.why100000.com

菜鸟学院
问吧
学吧
回吧







{----------------------------------------------------------------------}
function TForm1.GetXmlTree1(nNode: IXMLNode): string;
var
i, j: integer;
begin
for i:=0 to nNode.ChildNodes.Count-1 do
begin
s := s + '<' + nNode.ChildNodes.Nodes[i].NodeName;
for j:=0 to nNode.ChildNodes[i].AttributeNodes.Count-1 do
begin
s := s + ' '+ nNode.ChildNodes[i].AttributeNodes[j].NodeName;
s := s + '="'+ nNode.ChildNodes[i].AttributeNodes[j].NodeValue +'"';
end;
s := s + '>';
if nNode.ChildNodes.Nodes[i].IsTextElement then
s := s + nNode.ChildNodes.Nodes[i].Text;
if nNode.HasChildNodes and not nNode.ChildNodes.Nodes[i].IsTextElement then
begin
s := s + #13 + #10;
GetXmlTree1(nNode.ChildNodes.Nodes[i]);
end;
s := s + '' + #13 + #10;
end;
result := s;
end;
{----------------------------------------------------------------------}
function TForm1.GetXmlTree2(nNode: IXMLNode): string;
var
i, j: integer;
begin
s := s + '<' + nNode.NodeName;
for j:=0 to nNode.AttributeNodes.Count-1 do
begin
s := s + ' '+ nNode.AttributeNodes[j].NodeName;
s := s + '="'+ nNode.AttributeNodes[j].NodeValue +'"';
end;
s := s + '>';
if nNode.IsTextElement then
s := s + nNode.Text
else
begin
s := s + #13 + #10;
if nNode.HasChildNodes then
for i:=0 to nNode.ChildNodes.Count-1 do
begin
GetXmlTree2(nNode.ChildNodes.Nodes[i]);
end;
end;
s := s + ''+ #13 + #10;
result := s;
end;
{----------------------------------------------------------------------}
调用:

procedure TForm1.Button4Click(Sender: TObject);
var
oXml: TXMLDocument;
begin
oXml := TXMLDocument.Create(self);
oXml.FileName := '_Treeview.xml';
; oXml.Active:=true;
s :='';
s := GetXmlTree1(oXml.ChildNodes.FindNode('root'));
Memo1.Lines.Add(s);
oXml.Free;
end;

procedure TForm1.Button5Click(Sender: TObject);
var
oXml: TXMLDocument;
begin
oXml := TXMLDocument.Create(self);
oXml.FileName := '_Treeview.xml';
oXml.Active:=true;
s :='';
s := GetXmlTree2(oXml.ChildNodes.FindNode('root'));
Memo1.Lines.Add(s);
oXml.Free;
end;

Delphi简单控制台程序

program Project2;

{$APPTYPE CONSOLE}
{$R *.res} //此处我引入了别的程序编译好的资源文件,用来改变控制台程序的默认图标!!!!!
uses
Windows,
SysUtils;
var
a,s:double;

function Max(x,y:double):double; //写一个输出两数最大值的函数过程
begin
if x>y then
begin
result:=x;
end
else
result:=y;
end;

begin
{ TODO -oUser -cConsole Main : Insert code here }
Writeln('');
Writeln('===============Console Application Test!===============');
Writeln('请输入任意数字');
//writeLn('you are winner,I think you can successfully!');
ReadLn(a);
Writeln('您刚才输入的数字是'+FloatToStr(a));
Writeln('请再次输入任意数字');
Readln(s);
Writeln('您刚才输入的数字是'+FloatToStr(s));
Writeln('您刚才输入的两数最大的是'+FloatToStr(Max(a,s))); //引用上面定义的函数输出最大值,
Readln;

end.