Проверка XML с использованием внешнего DTD

Я пытаюсь проверить мой XML, используя внешний файл dtd. Вот заголовок XML:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE CONTEXT SYSTEM "Data.dtd">
<CONTEXT>
...
</CONTEXT>

И вот мой код:

        // Set the validation settings.
        XmlReaderSettings settings = new XmlReaderSettings();
        settings.DtdProcessing = DtdProcessing.Parse;
        settings.ValidationType = ValidationType.DTD;
        settings.ValidationEventHandler += (sender, args) => Debug.WriteLine(args.Message);
        // Create the XmlReader object.
        XmlReader reader = XmlReader.Create("Data.xml", settings);
        // Parse the file. 
        while (reader.Read());

После запуска этого кода я получаю в результате много ошибок выглядит так же:

The 'CONTEXT' element is not declared.

Я пытался изменить имя файла в doctype для явно несуществующего файла, но в результате получить те же ошибки. Скажите пожалуйста, где я ошибся?

1 ответ

Решение

Я мог бы воспроизвести проблему, как решение, которое я бы предложил установить

settings.XmlResolver = new XmlUrlResolver();

таким образом, внешний DTD-файл извлекается, кажется, в противном случае нет. Документация по MSDN гласит: "Начиная с.NET Framework 4.5.2 этот параметр имеет значение по умолчанию null". Так что, кажется, вам нужно создать это явно.

Другие вопросы по тегам