PHP - Processando XML Inválido

Estou usando o SimpleXML para carregar alguns arquivos xml (que eu não escrevi / forneço e realmente não consigo alterar o formato).

Ocasionalmente (por exemplo, um ou dois arquivos a cada 50 ou mais), eles não escapam a nenhum caractere especial (principalmente &, mas às vezes outras coisas aleatórias e inválidas). Isso cria um problema porque o SimpleXML com php simplesmente falha, e eu realmente não conheço nenhuma boa maneira de lidar com a análise de XML inválido.

Minha primeira idéia foi pré-processar o XML como uma string e colocar TODOS os campos como CDATA, para que funcionasse, mas, por alguma razão desagradável, o XML que preciso processar coloca todos os seus dados nos campos de atributo. Portanto, não posso usar a ideia CDATA. Um exemplo do XML sendo:

 <Author v="By Someone & Someone" />

Qual é a melhor maneira de processar isso para substituir todos os caracteres inválidos do XML antes de carregá-lo no SimpleXML?

questionAnswers(2)

yourAnswerToTheQuestion