使用外部 DTD 验证 XML
Validate XML using external DTD
我正在尝试使用外部 dtd 文件验证我的 XML。这里是 XML header:
<?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 中的文件名,但结果得到了同样的错误。请告诉我我哪里弄错了?
我可以重现该问题,作为修复我建议设置
settings.XmlResolver = new XmlUrlResolver();
这样看来,外部DTD文件被抓取了,好像没有。 MSDN 上的文档说:"Starting with the .NET Framework 4.5.2, this setting has a default value of null."。看来,你需要明确地创建它。
我正在尝试使用外部 dtd 文件验证我的 XML。这里是 XML header:
<?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 中的文件名,但结果得到了同样的错误。请告诉我我哪里弄错了?
我可以重现该问题,作为修复我建议设置
settings.XmlResolver = new XmlUrlResolver();
这样看来,外部DTD文件被抓取了,好像没有。 MSDN 上的文档说:"Starting with the .NET Framework 4.5.2, this setting has a default value of null."。看来,你需要明确地创建它。