procedure TForm1.XMLRecursion(const ARootNode: IXMLNode);var Node, SiblingNode: IXMLNode;begin Node := ARootNode; while (Node <> nil) do begin // 记录下 Node 的下一个兄弟节点 SiblingNode := Node.NextSibling; // 处理当前节点(Node) // ----------------------------- // ...... 你的对节点处理代码 ......... // ----------------------------- if Node.HasChildNodes then begin Node := Node.ChildNodes.First; // 递归 XMLRecursion(Node); end; // 再把 兄弟节点 转接过来, 继续遍历 Node := SiblingNode; end;end;procedure TForm1.btn1Click(Sender: TObject);var XmlName: string; XMLDoc: TXMLDocument; RootNode, Node, SiblingNode: IXMLNode;begin XmlName := '你的 Xml 文件名!'; if SysUtils.FileExists(XmlName) then begin XMLDoc := TXMLDocument.Create(nil); try XMLDoc.LoadFromFile(XmlName); RootNode := XMLDoc.DocumentElement; XMLRecursion(RootNode); finally XMLDoc.Free; end; end;end;