I have just released the first version of libess. What is libess? Its a C++ library that reads an ess file and stores all the information in a bunch of classes so you can do stuff with that information.
The download is here
http://www.cncmods.net/files/libess.zip
Its purpose is to provide a way to read and parse the oblivion ess files in exactly the same way the game code does. Its purpose is also to provide a better reference for the format of the ess files than either the Wyre Bash source code (which doesn't parse most of the files and doesn't do a good job of it) or the wiki http://www.uesp.net/wiki/Tes4Mod:Save_File_Format which is full of errors and un-decoded information.
As of right now it decodes the structure of (and most of the data types of) everything in the ess file (a few data types are guessed and might be e.g. long vs ulong vs float vs whatever) except for:
1.Mod file records stored under createdData in the save file (the format is documented on the wiki, I just need to actually implement it all)
2.CELL change records (I have most of that record decoded in cellchangerecord.h but I am still stuck dealing with the SeenData subrecord (the information on the wiki is not good enough for this)
3.REFR change records (I have most of that record decoded too, need to turn my notes into actual C++ code as well as figure out the data for the Tresspass property (0x20), parts of the data for the NonActorMagicTarget property (0x3A), the Conversation property (0x59) and parts of the Movement Extra property (0x4B).
and 4.Those parts of the ACHR and ACRE change records that are extra on top of the REFR change record (yes I can confirm that ACHR and ACRE records are derivatives of the REFR change record)
Its licensed under the GNU GPL which basically means if you want to use my code in your app, you can do it as long as you make the source code for your app available.
Anyone with questions about libess or the ess file format, feel free to ask here and I will do my best to answer them.