Is it more efficient to parse external XML or to hit the database?
It depends from case to case, you'll have to measure (or at least make an educated guess).
You'll have to consider several things.
Web service

it might hit database itself
it can be cached
it will introduce network latency and might be unreliable
or it could be in local network and faster than accessing even local disk

DB

might be slow since it needs to access disk (although databases have internal caches, but those are usually not targeted)
should be reliable

Technology itself doesn't mean much in terms of speed - in one case database parses SQL, in other XML parser parses XML, and database is usually acessed via socket as well, so you have both parsing and network in either case.
Caching data in your application if applicable is probably a good idea.
I was wondering when dealing with a web service API that returns XML, whether it's better (faster) to just call the external service each time and parse the XML (using ElementTree) for display on your site or to save the records into the database (after parsing it once or however many times you need to each day) and make database calls instead for that same information.