Biggest problem I can see with Berkeley DB is how to get hold of the source. I just wasted an hour of my life going around in circles trying to register on some maggot of a website so I could get hold of it ... to no avail. This is a totally different problem to the expat problem. (Never had any problem getting hold of the libexpat source.) The expat library builds straight out of the box on Windows in the MSYS shell using MinGW. Once libexpat is built and installed, XML::Parser builds and installs out of the box (as per the instructions in the README).
My hunch is that Berkeley DB is somewhat less trivial to build than libexpat - but if I can't get hold of the Berkeley DB source, I can't really find out. (There seems to be a Windows msi installer as well. Again you have to work out how to register before you can download it.)