For Java, see What would an AST (abstract syntax tree) for an object-oriented programming language look like?
For C, see get human readable AST from c++ code
Both of these are produced by one engine: our DMS Software Reengineering Toolkit. DMS also has a full C++11 parser that can produce similar XML. (EDIT Jan 2016: now full C++ 14 for GCC and Visual C++).
I don't think XML is really a good idea: it is enormous and klunky, and the analysis tools you can bring to bear on it are ... what? XSLT: That's not very useful for analyzing programs. Read the XML into a DOM and climb over that? You'll find that you are missing lots of useful support (symbol tables, etc.); AST's are just not enough. See my essay on Life After Parsing (check my bio or google).
You are better off using a set of integrated machinery that provides all kinds of consistent support for analyzing (multiple) programming languages (using the ASTs as a foundation). This is what DMS is designed to do.