procedure TForm1.Button1Click(Sender: TObject); const AXmlFileName1 = 'Project1.xml'; AXmlFileName2 = 'Project1Modif.xml'; var I: Integer; MyNode: IXMLNode; begin XMLDocument1.LoadFromFile(AXmlFileName1); MyNode := XMLDocument1.ChildNodes.Nodes[1]; for I := MyNode.ChildNodes.Count -1 downto 0 do if MyNode.ChildNodes[I].NodeName = 'dependency' then MyNode.ChildNodes.Delete(I); XMLDocument1.SaveToFile(AXmlFileName2); end;
procedure TForm1.Button2Click(Sender: TObject); function ReadStrFromStream(Stream: TStream): AnsiString; var C: AnsiChar; begin Result := ''; repeat Stream.Read(C, 1); Result := Result + C; until Stream.Position >= Stream.Size; end; const CFilename1 = 'Project1.res'; CFilename2 = 'Project1Modif.res'; var OldFileStream: TFileStream; NewFileStream: TFileStream; S: AnsiString; begin OldFileStream := TFileStream.Create(CFilename1, fmOpenRead); try NewFileStream := TFileStream.Create(CFilename2, fmCreate); try S := ''; S := ReadStrFromStream(OldFileStream); OldFileStream.Position := 0; if Pos('<dependency>', S) <> 0 then begin NewFileStream.CopyFrom(OldFileStream, Pos('<dependency>', S) -1); OldFileStream.Position := Pos('</dependency>', S) + Length('</dependency>') +1; NewFileStream.CopyFrom(OldFileStream, OldFileStream.Size - OldFileStream.Position); end else NewFileStream.CopyFrom(OldFileStream, OldFileStream.Size); finally NewFileStream.Free; end; finally OldFileStream.Free; end; end;