[Mono-list] Xml Entity Resolution

colin at breame.net colin at breame.net
Mon Mar 5 10:26:51 EST 2007


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