// MS.NET 1.x ignores undeclared entity reference here..
if (entity != null && entity.SystemId != null) {
- Uri baseUri = entity.BaseURI == null ? null : new Uri (entity.BaseURI);
+ Uri baseUri = entity.BaseURI == String.Empty ? null : new Uri (entity.BaseURI);
Stream stream = resolver.GetEntity (resolver.ResolveUri (baseUri, entity.SystemId), null, typeof (Stream)) as Stream;
nextEntityReader = new XmlTextReader (stream, xmlReaderNodeType, ParserContext);
} else {
// (C)2003 Atsushi Enomoto\r
//\r
using System;\r
+using System.IO;\r
using System.Xml;\r
using System.Xml.Schema;\r
using NUnit.Framework;\r
r.Read ();\r
AssertEquals (refOut, r.ReadOuterXml ());\r
}\r
+\r
+ [Test]\r
+ // imported testcase from sys.security which had regression.\r
+ public void ResolveEntityAndBaseURI ()\r
+ {\r
+ try {\r
+ using (TextWriter w = File.CreateText ("world.txt")) {\r
+ w.WriteLine ("world");\r
+ }\r
+\r
+ string xml = "<!DOCTYPE doc [\n" +\r
+ "<!ATTLIST doc attrExtEnt ENTITY #IMPLIED>\n" +\r
+ "<!ENTITY ent1 \"Hello\">\n" +\r
+ "<!ENTITY ent2 SYSTEM \"world.txt\">\n" +\r
+ "<!ENTITY entExt SYSTEM \"earth.gif\" NDATA gif>\n" +\r
+ "<!NOTATION gif SYSTEM \"viewgif.exe\">\n" +\r
+ "]>\n" +\r
+ "<doc attrExtEnt=\"entExt\">\n" +\r
+ " &ent1;, &ent2;!\n" +\r
+ "</doc>\n" +\r
+ "\n" +\r
+ "<!-- Let world.txt contain \"world\" (excluding the quotes) -->\n";\r
+\r
+ XmlValidatingReader xvr =\r
+ new XmlValidatingReader (\r
+ xml, XmlNodeType.Document, null);\r
+ xvr.ValidationType = ValidationType.None;\r
+ xvr.EntityHandling =\r
+ EntityHandling.ExpandCharEntities;\r
+ XmlDocument doc = new XmlDocument ();\r
+ doc.Load (xvr);\r
+\r
+ } finally {\r
+ if (File.Exists ("world.txt"))\r
+ File.Delete ("world.txt");\r
+ }\r
+ }\r
}\r
}\r