I have been using XML for about 3 years now.
What I have found important to remember is that XML is a way of tagging the INFORMATION content of data / text.
However efficient / poor the XML handling software may be - if the data isn't organised for what you need to do the program will be slow, large or convoluted.
I quite often find that I need to restructure the XML into an organisation that is relevant and suitable for the processing I need to do.
When the data matches the application then using XML + Xpath or SAX is usually a very concise way of achieving the desired result.
There are also cases where I convert the XML file into another format entirely and use a non-XML based approach.
I am probably fortunate as most of the times I need to use XML it is for data which is deeply heriarchical, where context matters and XPath is a very natural way of describing data clusters and relationships.