Проверка 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". Так что, кажется, вам нужно создать это явно.