我望着眼前的XML解析器System.Xml.Resolvers.XmlPreloadedResolver
带来的表中的DTD方面,我的事实难倒了实体<
通过XML阅读器,但没有实体的认可é
。
private static void Main(string[] args)
{
string invalidContent = "<?xml version=\"1.0\" encoding=\"utf-8\"?><key value=\"char é invalid\"/>";
string validContent = "<?xml version=\"1.0\" encoding=\"utf-8\"?><key value=\"char < valid\"/>";
XmlDocument xmlDocument = new XmlDocument();
var xmlReaderSettings = new XmlReaderSettings()
{
DtdProcessing = DtdProcessing.Parse,
XmlResolver = new XmlPreloadedResolver(XmlKnownDtds.All),
ProhibitDtd = false
};
using (XmlReader reader = XmlReader.Create(new StringReader(invalidContent), xmlReaderSettings))
{
xmlDocument.Load(reader); // reference to undeclared entity 'eacute'
}
using (XmlReader reader = XmlReader.Create(new StringReader(validContent), xmlReaderSettings))
{
xmlDocument.Load(reader); //
}
}
在XmlPreloadedResolver内部检查,我可以看到的是, XmlKnownDtds.All
应在包含eacute实体XHTML-lat1.ent文件带来的,其他许多人。 任何想法,为什么我看到这种行为?