[Mono-list] Xml Entity Resolution

colin at breame.net colin at breame.net
Tue Mar 6 07:46:06 EST 2007


Tried that (see below) but it still gets "System.Xml.XmlException:
Reference to undeclared entity" exceptions.

Thanks again,
C.

XmlDocument doc = new XmlDocument();
XmlTextReader reader = new XmlTextReader(new
StringReader(xml_text_with_entities));
reader.XmlResolver = null;
doc.Load(reader);

On Tue, 06 Mar 2007 06:07:02 +0900, "Atsushi Eno" <atsushi at ximian.com>
said:
> Well, you could just try XmlTextReader.XmlResolver = null here ...
> 
> Atsushi Eno
> 
> Colin John Nicholas Breame wrote:
> > Hi,
> > 
> > I've tried your solution with both XmlTextReader and XmlValidatingReader
> > but I can't make it work.  The problem is that the XmlTextReader
> > actually requires entities to be resolved.
> > 
> > As a work around I've subclassed XmlTextReader to return false for
> > CanResolveEntity, which seems to (at least initially) do the trick.  See
> > below.
> > 
> > Thanks
> > C.
> > 
> > using System.IO;
> > using System.Xml;
> > 
> > public class NonEntityResolvingXmlTextReader : XmlTextReader {
> >   public NonResolvingXmlTextReader(TextReader reader) : base(reader) {
> >   }
> > 
> >   public override bool CanResolveEntity {
> >     get {
> >       return false;
> >     }
> >   }
> > }
> > 
> > 
> > On Mon, 05 Mar 2007 14:00:00 +0900, "Atsushi Eno" <atsushi at ximian.com>
> > said:
> >> Hi,
> >>
> >> If you skip the DTD, any entity references (except for &lt;, &gt;, 
> >> &apos; and &quot;) are rejected during XmlDocument.Load().
> >>
> >> If you don't care such buggy document, you can try
> >>
> >> 	while (!reader.EOF)
> >> 		doc.AppendChild (doc.ReadNode (reader));
> >>
> >> which does not reject unresolved entity references (funny, but
> >> this is what .net System.Xml.dll does).
> >>
> >> Atsushi Eno
> >>
> >> colin at breame.net wrote:
> >>> I'm trying to turn off entity resolution using XmlDocument as I don't
> >>> have a DTD and I'm getting "System.Xml.XmlException: Cannot resolve
> >>> entity without DTD".  I can't see an explicit "ResolveEntity" property I
> >>> could set to off.  Any ideas?  Is there a mono specific way of doing
> >>> this?
> >>>
> >>> Thanks
> >>> Colin.
> >>> _______________________________________________
> >>> Mono-list maillist  -  Mono-list at lists.ximian.com
> >>> http://lists.ximian.com/mailman/listinfo/mono-list
> >>>
> >> _______________________________________________
> >> Mono-list maillist  -  Mono-list at lists.ximian.com
> >> http://lists.ximian.com/mailman/listinfo/mono-list
> > 
> 


More information about the Mono-list mailing list