Неверный символ в заданной кодировке - PullRequest
2 голосов
/ 26 июля 2011
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;
    }
}

Я получил xml-файл от третьей стороны, который также содержит файл определения типа документа после объявления xml.

<?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>

Если я анализирую файл с недопустимым символом в данной кодировке. Строка 102, позиция 56. Если я перехватываю исключение и пытаюсь выполнить синтаксический анализ файла, у меня возникает другая проблема - анализ файлов, но

Я получил ошибку. Не удалось найти файл 'C: \ Windows \ system32 \ SoccerMatchPlus.dtd'.

Файл определения типа документа с именем SoccerMatchPlus.dtd добавляется третьей стороной к корневому элементу.

В случае метода Load парсер загружает файл из того места, где также существует xml-файл.

Я поместил SoccerMatchPlus.dtd в другое место, где находится xml-файл, могу ли я загрузить этот файл SoccerMatchPlus.dtd из указанного места во время выполнения или вы можете сказать мне лучший способ загрузить xml-файл, содержащий данные о недопустимых символах

1 Ответ

1 голос
/ 27 июля 2011

Используйте свойство XmlResolver класса XmlDocument, чтобы отключить обработку DTD.

XmlDocument oXmlDoc = new XmlDocument();
oXmlDoc.XmlResolver = null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...