c# - 使用外部 DTD 验证 XML

标签 c# xml 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 上的文档说:“从 .NET Framework 4.5.2 开始,此设置的默认值为空。”。看来,您需要明确地创建它。

关于c# - 使用外部 DTD 验证 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34482320/

相关文章:

c# - 推荐一个库/API 在 C# 中解压文件

c# - 将 Ocelot 16.0 与 ASP.Net Core 3.1 集成无法正常工作,因为我需要将 Swagger 与 Ocelot 一起使用

xml - 使用 XSLT 将 XML 转换为 JSON 并删除命名空间

xml - DTD 究竟是什么?

html - 使用集成的 CSS 和 DTD 创建 XML

java - 在相对路径上解析具有 DTD 架构的 XML 文件

c# - Entity Framework 还是其他?

c# - C#中如何等待点击

c# - 如何在xml注释<code>标签中指定语言

python - 我如何使用 Xml Odoo 创建电子邮件模板