2015-12-27 8 views
0

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

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

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

+0

Также я попытался разместить мой файл dtd внутри xml (сделать его внутренним), и в результате все работает нормально, никаких ошибок. –

+1

Ну, как DTD выглядит точно? –

+0

Является ли ваш 'data.dtd' рядом с файлом' xml'? –

ответ

2

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

settings.XmlResolver = new XmlUrlResolver(); 

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

+0

Ровно! Спасибо! –