procedure TfmMain.DelXMLNote(xmlFile:String);
var root_node,tbl_node,fld_node :IXMLNode;
    XMLDoc:TXMLDocument;
begin
  XMLDoc:=TXMLDocument.Create(Self);
  XMLDoc.LoadFromFile(xmlFile);
  root_node := XMLDoc.DocumentElement;
  tbl_node := root_node.ChildNodes.First;
  while (tbl_node <> nil) do  
  begin
    tbl_node.ParentNode.ChildNodes.Delete(tbl_node.ParentNode.ChildNodes.IndexOf(tbl_node));
    tbl_node := tbl_node.NextSibling;
  end;
end;

解决方案 »

  1.   

    应该用childnodes.remove吧,而且删除了tbl_node,还有tbl_node.nextsibling么?我也写过类似的东西,供参考var
      tmpEl:IXMLNode;
    begin
      if el.HasChildNodes then
      begin
        tmpEl:=el.ChildNodes.Last;
        while tmpEl<>nil do
        begin
          if tmpEl.NodeType=ntText then
          begin
            el.ChildNodes.Remove(tmpEl);
            tmpEl:=nil;
            if el.HasChildNodes then
              tmpEl:=el.ChildNodes.Last;
          end
          else
            tmpEl:=tmpEl.PreviousSibling;
        end;
      end;