c# - 使用 XmlReader 加载外部 dtd

标签 c# xml external dtd

我创建了一个名为 test1.xml 的 XML 文档,它链接到定义了实体 circ 的外部 dtd mydtd2.dtd。两个文件都保存在同一个文件夹中。但是,当使用 XmlReader 读取 XML 文件时,出现错误 Reference to undeclared entity circ。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE test1 SYSTEM "mydtd2.dtd">
 <test1> 
   print this character &circ; 
</test1>

<!ELEMENT test1 >
<!ENTITY circ "&#x0005E;">



 XmlReaderSettings settings = new XmlReaderSettings();
 settings.DtdProcessing = DtdProcessing.Parse;
 settings.CheckCharacters = false;
 XmlDocument doc = new XmlDocument();

 using (XmlReader reader = XmlReader.Create(filename, settings))
 {
    doc.Load(reader);
 }

当我在内部将实体添加到 XML 文件的顶部时,它起作用了。

<?xml version="1.0" standalone="yes" ?>
<!DOCTYPE wow [
  <!ENTITY circ     "&#x0005E;" >
]>

<test1> 
     wow can this work ( j &circ;y )
</test1>

最佳答案

我在设置中添加了这个。

  XmlUrlResolver resolver = new XmlUrlResolver();
    resolver.Credentials = CredentialCache.DefaultCredentials;
    settings.XmlResolver = resolver;

关于c# - 使用 XmlReader 加载外部 dtd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48157428/

相关文章:

c# - 最小化到托盘

java - Android 像 Iphone Part2 一样设置启动画面(Activity)

php - 访问 xml 对象

javascript - 使用默认操作系统程序打开所有文件类型

c - 为什么在 nasm 中使用外部 c 函数会破坏此代码?

css - 从外部目录导入 Sass 样式表

c# - 从 C# 中的字符串名称获取 Class 对象

c# - 以编程方式将 TextBlock 添加到 DataTemplate

c# - 调用 RPG 程序的 iSeries 存储过程不向程序返回值

Android SAXPArser,解析封装标签,如何?