The trick is to bound the term by logically three parts, a part where $X_n$ varies from $X$ by no more than $\epsilon$, a part with $X<M$ with diminishing measure, and finally a part of $X>M$ where the expectation diminishes.
Let $\epsilon > 0,$ $A_n = \left\{ \vert X_n - X \vert \le \epsilon \right\}$. Since $\lim_{n\to\infty} X_{n} = X$ a.s, we have
$$ \lim _{n\to\infty} P(A_n^c) = 0.$$
Let $X^M=X \wedge M$. By the dominated convergence theorem, $\lim _{M\to\infty}E(X^M)=EX.$ Hence $\lim _{M\to\infty}E(X1_{(X>M)})=0.$ Again by dominated convergence theorem, $\lim _{n\to\infty}E(X_n1_{(X_n>M)})=E(X1_{(X>M)})$, i.e. with any $\delta > 0$, for sufficiently large $N$, $$E(X_n1_{(X_n>M)})\le E(X1_{(X>M)}) + \delta\quad \text{for } n \ge N.$$
$$E|X_{n} - X| = \int | X_n - X |dP = \int_{A_n} | X_n - X |dP + \int_{A_n^C} | X_n - X |dP $$
$$\le \int_{A_n} | X_n - X |dP + \int_{A_n^C} X_n dP + \int_{A_n^C} X dP $$
$$ = \int_{A_n} | X_n - X |dP + \int_{A_n^C \cap \{X_n\le M\}} X_n dP + \int_{A_n^C \cap \{X\le M\}} X dP + \int_{A_n^C \cap \{X_n> M\}} X_n dP + \int_{A_n^C \cap \{X> M\}} X dP $$
$$ \le \int_{A_n} | X_n - X |dP + \int_{A_n^C \cap \{X_n\le M\}} X_n dP + \int_{A_n^C \cap \{X\le M\}} X dP + \int_{\{X_n> M\}} X_n dP + \int_{\{X> M\}} X dP $$
$$ \le \epsilon P(A_n) + 2P(A_n^c)M + E(X_n1_{(X_n>M)}) + E(X1_{(X>M)}) $$
$$ \le \epsilon + 2P(A_n^c)M + E(X_n1_{(X_n>M)}) + E(X1_{(X>M)}) $$
$$ \le \epsilon + 2P(A_n^c)M + \delta + 2 E(X1_{(X>M)}) $$
With the above inequality, we can start by choosing large enough $M$ so that the last term is small enough, next we can choose sufficiently small $\epsilon$ and sufficiently large $n$ so that the first three terms as well as the total are small enough.
Hence $\lim_{n\to\infty} E|X_{n} - X| = 0$.