Проще говоря, нет, нет способа загрузить XML непосредственно в DataTable с помощью методов DataTable, равно как и нет способа создать DataTable непосредственно из произвольной схемы. Такие операции должны выполняться через DataSet; в противном случае вы в конечном итоге делаете очень сложные обходные пути.
Существуют некоторые методы, которые вы можете применить, используя сериализацию xml, которые могли бы воссоздать набор данных из ранее сериализованного xml. Это не позволяет использовать произвольную схему.
Вы также можете написать код, специально загружающий ваш XML (через XDocument, XmlDocument или XmlTextReader) и создающий DataTable на лету, но писать его нетривиально и, вероятно, это займет у вас довольно много времени. Это также своего рода изобретать колесо.
По сути, DataSet является единственным классом в этой иерархии с методами для обработки XML, поскольку Xml может содержать любое количество таблиц. Чтобы справиться с самым широким числом случаев, когда вы почти не можете делать предположений относительно XML, он должен быть реализован на этом уровне.
Вы также можете подумать, уместно ли просто загрузить xml в XDocument, проверить его с помощью метода расширения Validate и использовать Linq to Xml для его запроса.