Caractere inválido na codificação fornecida

XmlDocument oXmlDoc = new XmlDocument();

try
{
    oXmlDoc.Load(filePath);
}
catch (Exception ex)
{
    // Log Error Here
    try
    {
        Encoding enc = Encoding.GetEncoding("iso-8859-1");
        StreamReader sr = new StreamReader(filePath, enc);
        String response = sr.ReadToEnd();
        oXmlDoc.LoadXml(response);
    }
    catch (Exception innerException)
    {
        // Log Error Here
        return false;
    }
}

Recebi um arquivo xml de terceiros que também inclui o arquivo de definição de tipo de documento após a declaração xm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE SoccerMatchPlus SYSTEM "SoccerMatchPlus.dtd">
<SoccerMatchPlus matchid="33226">
<Booking id="13642055" time="47">
<Player id="370927">
<Name firstName="Lasse" initials="L" lastName="Nielsen">L Nielsen</Name>
</Player>
<Team id="26415" name="AæB" homeOrAway="Home"/>
</Booking>
</SoccerMatchPlus>

Se eu analisar o arquivo com caracteres inválidos na codificação especificada. Linha 102, posição 56. Se eu pegar a exceção e tentar analisar o arquivo novamente, tenho outro problema, o arquivo analisa mas

Eu recebi o erro Não foi possível encontrar o arquivo 'C: \ Windows \ system32 \ SoccerMatchPlus.dtd'.

O arquivo de definição de tipo de documento chamado SoccerMatchPlus.dtd é adicionado antes do elemento raiz por terceiro

No caso do método Load, o analisador carrega o arquivo do local em que o arquivo xml também exist

Coloquei o SoccerMatchPlus.dtd em outro local onde o arquivo xml reside. Posso carregar esse arquivo SoccerMatchPlus.dtd do local especificado em tempo de execução ou você pode me dizer a melhor maneira de carregar o arquivo xml que contém os dados de caracteres inválidos?

questionAnswers(1)

yourAnswerToTheQuestion