Convert xml error to string

There would be no problem.
````enum XMLError```` is declared before ````XMLUtil```` because ````ToErrorName````n uses ````XMLError````.

Since I agree that error list would not be changed in the future, I made the implementation of ````const char *ErrorNames[]```` more easy to read by eliminating preprocessor macros.