我尝试使用外部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中更改明显不存在的文件中的文件名,但结果会得到相同的错误。请告诉我在哪里弄错了?
答案 0 :(得分:3)
我可以重现这个问题,作为修正我建议设置
rhs
这样,外部DTD文件被提取,看起来,否则没有。 MSDN上的文档说:“从.NET Framework 4.5.2开始,此设置的默认值为null。”。所以看来,你需要明确地创建它。