I would be very happy as long as the documention clarifies why it happened. In addition, e.g. the Simple Framework API uses special exceptions inside, but all that is propagated to the top level is "Exception". What are the reasons for this behaviour in general?
Probably because whatever the exception under the hood hapenned, you can't do more than log it and pass or display to the end user parsing failed cause : [exception translated/message]. Your application can't do something specific for the specific exception that happened under the hood, the xml processing failed, end of the story, see message & stack, that's all you need.
This could be wrap up in an GenericSimpleFrameworkXmlException. It does permit you to have multiple catch, but to be honest, I almost never have one more catch that just log and rethrow because there is no more that I can do.
edit : I don't have a log/rethrow on every layer of my application, just where I think it make sense, sometimes I'll rethrow, or convert a checked one to an unchecked or the opposite if I think this is what I need.
On the very rare case I do need a specific catch, I just split the code in two try/catch block. It happens so rarely that it weight nothing in the redability of the code as a whole.
Personnaly in almost all case, I prefer to use the IllegalArgumentException, IllegalStateException... with the right message instead of making my bunch of tree of customized exception for that. This is simplier, it does the job, and I don't have headaches about naming and organazing the tree for .. pretty much nothing.