Это недопустимый XML, поэтому парсер не должен анализировать его без ошибок.
Но вы сталкиваетесь с подобным недействительным XML в реальном мире. Мое решение состоит в том, чтобы вручную вставить маркеры CDATA в данные. Например,
<data><![CDATA[ garbage with &invalid characters ]]></data>
Конечно, вы вернете данные как есть, и вам придется иметь дело с недействительными символами самостоятельно.