【问题标题】:Load external dtd with XmlReader使用 XmlReader 加载外部 dtd
【发布时间】:2018-06-17 20:28:11
【问题描述】:

我创建了一个名为 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>

【问题讨论】:

标签: c# xml external dtd


【解决方案1】:

我将此添加到设置中。

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

【讨论】:

  • 是的,看起来效果很好。从 MSDN 文档中不是很清楚。你应该接受你自己的答案:)。
猜你喜欢
  • 2021-01-05
  • 2016-04-01
  • 2020-08-07
  • 2020-06-05
  • 1970-01-01
  • 2014-04-26
  • 2011-03-24
  • 2011-07-24
相关资源
最近更新 更多