XML is non-proprietary data format great for
exchange data between applications.
XML can be used (perhaps) to store small amount of data if you do not need functionality provided by DBs:
transactional integrity,
security
authentication
concurrency control
data validation and conversion
search mechanism...
but it was not designed for this proposal. And certainly it is not a good choice for storing large amounts of data. In this case you are better off with DB.
"In general, XML is the right choice when you need to
* Share enterprise data. Using XML is a great way to share data because it eliminates application dependencies.
* Transfer transient data. XML is easy to transfer across the Internet.
* Collect and work with meta data. If you're cataloging Web content, for example, XML enables easier Web searches.
* Conduct client-side rendering of Web pages with Extensible Style Language (XSL). This approach can relieve some of the burden from your Web server.
In general, XML is NOT the best choice for
* Updating, storing, and retrieving large amounts of data on disk. These tasks best suit a relational database management system (RDBMS).
* Working with internal data structures that aren't exposed to outside applications. Iterating through XML is much slower than iterating through an ADO Recordset object, and the ADO Recordset object has a slightly easier programming model than the XML Document Object Model (XMLDOM).
* Use as an argument in a method call. XML isn't always a bad choice in this case. The main drawback is that you need to instantiate an object (XMLDOM) inside the method to access the XML fields and records. You might find it simpler to pass in a multidimensional array, ADO Recordset object (which is self-marshalling), a
string, or even a user data type (UDT) or structure (in C programming)."
http://www.sqlmag.com/Articles/Index.cfm?ArticleID=8875