我创建了一个名为 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 ˆ
</test1>
<!ELEMENT test1 >
<!ENTITY circ "^">
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 "^" >
]>
<test1>
wow can this work ( j ˆy )
</test1>
最佳答案
我在设置中添加了这个。
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = CredentialCache.DefaultCredentials;
settings.XmlResolver = resolver;
关于c# - 使用 XmlReader 加载外部 dtd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48157428/