Rya*_*ger 6 c# xml special-characters
我在C#中处理一个XML文件(不包含任何dtd或ent声明),其中包含é和等实体à.尝试加载XML文件时收到以下异常...
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(record);
Run Code Online (Sandbox Code Playgroud)
提及未申报实体'eacute'.
我能够追踪正确的ENT文件在这里.加载XML文件时如何告诉XmlDocument使用此ent文件?
在 .Net 4 之前的框架版本中,您使用ProhibitDtdXmlReaderSettings 实例。
var settings = new XmlReaderSettings();
settings.ProhibitDtd = false;
string DTD = @"<!DOCTYPE doc [
<!ENTITY % iso-lat1 PUBLIC ""ISO 8879:1986//ENTITIES Added Latin 1//EN//XML""
""http://www.oasis-open.org/docbook/xmlcharent/0.3/iso-lat1.ent"">
%iso-lat1;
]> ";
string xml = string.Concat(DTD,"<xml><txt>rené</txt></xml>");
XmlDocument xd = new XmlDocument();
xd.Load(XmlReader.Create(new MemoryStream(
UTF8Encoding.UTF8.GetBytes(xml)), settings));
Run Code Online (Sandbox Code Playgroud)
从 .Net 4.0 开始,使用具有在 XmlTextReader 上设置的DtdProcessing值的属性。DtdProcessing.Parse
XmlDocument xd = new XmlDocument();
using (var rdr = new XmlTextReader(new StringReader(xml)))
{
rdr.DtdProcessing = DtdProcessing.Parse;
xd.Load(rdr);
}
Run Code Online (Sandbox Code Playgroud)