You may have slightly changed your definitions, understandable due to the large number of similar technologies around the world.
XML is not a flat file format (or flat file database), but from reading your goal, it sounds like you really want to be a stand-alone relational database, not an actual flat file.
Like others, I can highly recommend SQLite for this purpose. There are bindings for various platforms, .NET has System.Data.SQLite , which in a single file is both a database provider and an engine.
Two big advantages of using SQLite are that the actual database is completely self contained in a single file controlled by your application and that it supports the standard SQL DDL and DML commands (i.e. SELECT, INSERT, UPDATE, DELETE, CREATE DATABASE / TABLE etc.).
For one user application, SQLite is an excellent (one of the best) ways to store both application data and settings. Recently there has been a discourse that it can even support smaller multi-user applications.
However, Oracle, MySQL, SQL Server, etc. still definitely prefer multi-user applications (even small applications) if you have the ability to access the database / use server.
In addition, do not forget that the choice of database is not mutually exclusive.
You may have a multi-user application with a rich client interface installed on many users computers. The central database here really needs to be a multi-user db such as MySQL. But within the rich client interface, SQLIte is ideal for storing each user's settings or, possibly, for offline support when the database cannot be reached.