That doesn't seem like an unnecessarily large file for the number of edges (I'm assuming with float or double properties also) you have. Thats only 100 bytes per edge. It should compress nicely for storage.
The values you are storing are literally binary, and a hexidecimal representation is the most compact AFAIK. I am not certain, but maybe you can round your floating point values to nice round (negative) powers of two to make them smaller. You know, like .3 is not a simple number in hex:
http://www.binaryconvert.com/result_double.html?decimal=046051 but .75 is because it comes from negative powers of two (1/2 + 1/4).
But, I'd bet the XML saves all the zeros for round numbers anyway. You'd have to check.