使用外部DTD验证XML

时间:2015-12-27 16:21:14

标签: c# xml dtd xml-dtd

我尝试使用外部dtd文件验证我的XML。这是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 个答案:

答案 0 :(得分:3)

我可以重现这个问题,作为修正我建议设置

rhs

这样,外部DTD文件被提取,看起来,否则没有。 MSDN上的文档说:“从.NET Framework 4.5.2开始,此设置的默认值为null。”。所以看来,你需要明确地创建它。