delphi重复读取xml内容
procedure GetInfoFromXML(dXml: IXMLDocument; var code, mess,rw,title,path: string);
var
Root, Return_Node, Child_Node,sun,sunzi,sunjie: IXMLNode;
i,j:Integer;
taskrw,tasktitle,taskadd:array[0..7] of string;
begin
Root := dXML.DocumentElement;
Return_Node := Root.ChildNodes.First;
Child_Node := Return_Node.ChildNodes.First;
while (Child_Node <> nil) do
begin
if (Child_Node.NodeName = 'ReturnCode') then
begin
code := Child_Node.NodeValue;
end
else if (Child_Node.NodeName = 'ReturnMess') then
begin
mess := Child_Node.NodeValue;
end
else if(Child_Node.NodeName = 'Tasks') then
begin
sunjie := Child_Node.ChildNodes.First;
sunzi := sunjie.ChildNodes.First;
while (sunjie<>nil) do
begin
if (sunjie.NodeName = 'Task') then
begin
if (sunzi.NodeName = 'TaskCode') then
begin
rw := sunzi.NodeValue;
end
else if(sunzi.NodeName = 'TaskTitle') then
begin
title := sunzi.NodeValue;
end
else if(sunzi.NodeName = 'TaskUrl') then
begin
path := sunzi.NodeValue;
end;
sunzi := sunzi.NextSibling;
if sunzi = nil then
begin
taskrw[i] := rw;
tasktitle[i] := title;
taskadd[i] := path;
end;
end;
end;
sunjie := sunjie.NextSibling;
end;
Child_Node := Child_Node.NextSibling;
end;
end;
我这里为什么第二次读到TaskCode这个节点就出错啊?
文件原型是这样的
<Servicesreply>
<Service>
<ReturnCode>返回代码</ReturnCode>
<ReturnMess>返回信息</ReturnMess>
<Tasks> //仅当ReturnCode节点值为10000时存在
<Task>
<TaskCode>任务标识</TaskCode> //参见任务列表
<TaskTitle>任务说明</TaskTitle>
<TaskUrl>任务地址</TaskUrl>
</Task>
<Task>
<TaskCode>任务标识</TaskCode>
<TaskTitle>任务说明</TaskTitle>
<TaskUrl>任务地址</TaskUrl>
</Task>
…………