Есть несколько подходов для решение данной задачи:
1. Скачать XML в файл и потом парсить этот файл.
2. Скачать XML в память и парсить его из памяти (плохой вариант. так как размер XML может быть большим).
Оба варианта стоит выполнять в AsyncTask-е. Процесс парсинга можно выполнять в этом же AsyncTask-е или же в другом, это зависит от поставленной задачи. Выполнять парсинг в основном потоке я не рекомендую, так как данная операция достаточно трудоемкая, особенно если большой размер XML-а.