使用外部实体文件在C#中处理XML
发布时间:2020-12-15 04:30:43 所属栏目:百科 来源:网络整理
导读:我在C#中处理一个 XML文件(不包含任何dtd或ent声明),其中包含 eacute等实体;和 agrave;.尝试加载XML文件时收到以下异常… XmlDocument xmlDoc = new XmlDocument();xmlDoc.LoadXml(record); Reference to undeclared entity ‘eacute’. 我能够找到正确的文
我在C#中处理一个
XML文件(不包含任何dtd或ent声明),其中包含& eacute等实体;和& agrave;.尝试加载XML文件时收到以下异常…
XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(record);
我能够找到正确的文件here.如何在加载XML文件时告诉XmlDocument使用此文件? 解决方法
在.Net 4之前的框架版本中,您使用了
ProhibitDtd 的XmlReaderSettings实例.
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)); 从.Net 4.0开始,使用 XmlDocument xd = new XmlDocument(); using (var rdr = new XmlTextReader(new StringReader(xml))) { rdr.DtdProcessing = DtdProcessing.Parse; xd.Load(rdr); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |