コード例 #1
0
        public void XmlResolverWithFallbackAndKnownDtdsConstructor()
        {
            var fallbackResolver = new XmlPreloadedResolver();
            var resolver         = new XmlPreloadedResolver(fallbackResolver, XmlKnownDtds.Rss091);

            string[] expectedUris = { "-//Netscape Communications//DTD RSS 0.91//EN", "http://my.netscape.com/publish/formats/rss-0.91.dtd" };
            Assert.Equal(expectedUris.Length, resolver.PreloadedUris.Count());
            foreach (string uriString in expectedUris)
            {
                Assert.Contains(resolver.PreloadedUris, u => u.OriginalString.Equals(uriString));
            }
        }
コード例 #2
0
        public void XmlResolverGetEntityAsyncWithValidUserSuppliedData()
        {
            byte[] inpData     = Encoding.ASCII.GetBytes("hello world");
            var    xmlResolver = new XmlPreloadedResolver(XmlKnownDtds.Xhtml10);

            xmlResolver.Add(new Uri("-//W3C//DTD FAKE 1.0 Not Real//EN", UriKind.RelativeOrAbsolute), inpData);
            Task <object> output = xmlResolver.GetEntityAsync(new Uri("-//W3C//DTD FAKE 1.0 Not Real//EN",
                                                                      UriKind.RelativeOrAbsolute), null, typeof(Stream));
            var result = new byte[inpData.Length];

            (output.Result as Stream).Read(result, 0, result.Length);
            Assert.Equal(inpData, result);
        }
コード例 #3
0
        /// <summary>
        /// Adds a byte array to the <see cref="XmlPreloadedResolver"/> store and maps it to a URI.
        /// If the store already contains a mapping for the same URI,
        /// the existing mapping is overridden if <paramref name="override"/> is specified as <see langword="true"/>.
        /// </summary>
        /// <param name="resolver">The resolver to which to add the data mapped to the URI.</param>
        /// <param name="uri">The URI of the data that is being added to the <see cref="XmlPreloadedResolver"/> store.</param>
        /// <param name="value">A byte array with the data that corresponds to the provided URI.</param>
        /// <param name="override">
        /// Whether to add <paramref name="value"/> and override the mapping for <paramref name="uri"/>
        /// even if it is already defined in the store.
        /// </param>
        /// <returns>
        /// <see langword="true"/> if <paramref name="value"/> was added to the store and mapped to <paramref name="uri"/>;
        /// <see langword="false"/> if <paramref name="uri"/> was already defined and not overridden.
        /// </returns>
        /// <remarks>
        /// Refer to the remarks on the <see cref="Add(XmlPreloadedResolver, Uri, Stream, bool)"/> overload.
        /// </remarks>
        public static bool Add(this XmlPreloadedResolver resolver, Uri uri, byte[] value, bool @override)
        {
            ArgumentValidate.NotNull(resolver, nameof(resolver));
            ArgumentValidate.NotNull(uri, nameof(uri));
            ArgumentValidate.NotNull(value, nameof(value));

            if (@override || !resolver.PreloadedUris.Contains(uri))
            {
                resolver.Add(uri, value);
                return(true);
            }

            return(false);
        }
コード例 #4
0
        public void Add_NoOverride()
        {
            var uri = new Uri("http://test.local");

            byte[] resourceA = new byte[] { 43, 59 };
            byte[] resourceB = new byte[] { 217, 24, 64 };

            var xmlResolver = new XmlPreloadedResolver();

            xmlResolver.Add(uri, resourceA);
            xmlResolver.Add(uri, resourceB, @override: false);

            VerifyResource(resourceA, xmlResolver, uri);
        }
コード例 #5
0
        public static XmlDocument CreateHtml5Document(XmlPreloadedResolver resolver)
        {
            XmlDocument resultDocument = new XmlDocument {
                XmlResolver = resolver ?? new XmlPreloadedResolver(XmlKnownDtds.Xhtml10)
            };

            resultDocument.AppendChild(resultDocument.CreateDocumentType("html", "", EntityMapDictionary.DtdURI_Xhtml_Transitional, ""));
            XmlElement xmlElement = ((XmlElement)resultDocument.AppendChild(resultDocument.CreateElement("html", NamespaceURI_Xhtml))).AppendElement("head");

            xmlElement.AppendElement("meta").ApplyAttribute("name", "viewport").ApplyAttribute("content", "width=1024, initial-scale=1.0");
            xmlElement.AppendElement("meta").ApplyAttribute("http-equiv", "X-UA-Compatible").ApplyAttribute("content", "utf-8");
            xmlElement.AppendElement("meta").ApplyAttribute("charset", "ie=edge");
            xmlElement.AppendElement("title").InnerText = "";
            xmlElement = resultDocument.DocumentElement.AppendElement("body");
            return(resultDocument);
        }
コード例 #6
0
        /// <summary>
        ///     Initializes a new instance of the <see cref = "XmlPrimeSerializationTask" /> class.
        /// </summary>
        protected XmlPrimeSerializationTask()
        {
            // TODO: we should really be using ResourceResolvers rather than XmlResolvers (when we support them).

            _nameTable = new NameTable();
            var preloaded = new XmlPreloadedResolver(new XmlUrlResolver());

            _xmlResolver = new GZipXmlUrlResolver(preloaded);
            _schemaSet   = new XmlSchemaSet(_nameTable)
            {
                XmlResolver = _xmlResolver
            };

            Validation = "none";
            ProcessXsiSchemaLocation = true;
        }
コード例 #7
0
        public void XmlResolverGetEntityAsyncWithInvalidData()
        {
            var xmlResolver = new XmlPreloadedResolver(XmlKnownDtds.Xhtml10);

            Assert.ThrowsAsync <ArgumentNullException>(() => xmlResolver.GetEntityAsync(null, null, null));
            Assert.ThrowsAsync <XmlException>(() => xmlResolver.GetEntityAsync(new Uri("https://DummyUri"), null, null));
            Assert.ThrowsAsync <XmlException>(() =>
                                              xmlResolver.GetEntityAsync(new Uri("-//W3C//ENTITIES Latin 1 for XHTML//EN", UriKind.RelativeOrAbsolute), null, typeof(string)));

            xmlResolver = new XmlPreloadedResolver(new XmlPreloadedResolver(), XmlKnownDtds.Xhtml10);
            Assert.ThrowsAsync <XmlException>(() =>
                                              xmlResolver.GetEntityAsync(new Uri("https://DummyUri", UriKind.RelativeOrAbsolute), null, typeof(string)));

            Assert.ThrowsAsync <XmlException>(() =>
                                              xmlResolver.GetEntityAsync(new Uri("-//W3C//ENTITIES Latin 1 for XHTML//EN", UriKind.RelativeOrAbsolute), null, typeof(TextReader)));
        }
コード例 #8
0
        public void XmlResolverWithKnownDtdsXhtml10Constructor()
        {
            var resolver = new XmlPreloadedResolver(XmlKnownDtds.Xhtml10);

            string[] expectedUris = { "-//W3C//DTD XHTML 1.0 Strict//EN",                        "-//W3C//DTD XHTML 1.0 Transitional//EN",
                                      "-//W3C//ENTITIES Symbols for XHTML//EN",                  "-//W3C//ENTITIES Latin 1 for XHTML//EN",             "-//W3C//ENTITIES Symbols for XHTML//EN",
                                      "-//W3C//ENTITIES Special for XHTML//EN",                  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd",
                                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd",
                                      "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent",          "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent",
                                      "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent" };

            Assert.Equal(expectedUris.Length, resolver.PreloadedUris.Count());
            foreach (string uriString in expectedUris)
            {
                Assert.Contains(resolver.PreloadedUris, u => u.OriginalString.Equals(uriString));
            }
        }
コード例 #9
0
        public void XmlResolverGetEntityWithInvalidData()
        {
            var xmlResolver = new XmlPreloadedResolver(XmlKnownDtds.Xhtml10);

            Assert.Throws <XmlException>(() => xmlResolver.GetEntity(new Uri("https://JustAUri"), null, typeof(string)));

            xmlResolver = new XmlPreloadedResolver(new XmlPreloadedResolver(), XmlKnownDtds.Xhtml10);
            Assert.Throws <XmlException>(() => xmlResolver.GetEntity(new Uri("https://JustAUri"), null, typeof(string)));

            xmlResolver = new XmlPreloadedResolver(XmlKnownDtds.Xhtml10);
            Assert.Throws <XmlException>(() => xmlResolver.GetEntity(new Uri("-//W3C//DTD XHTML 1.0 Transitional//EN", UriKind.RelativeOrAbsolute)
                                                                     , null, typeof(string)));

            xmlResolver = new XmlPreloadedResolver(new XmlPreloadedResolver(), XmlKnownDtds.Xhtml10);
            Assert.Throws <XmlException>(() => xmlResolver.GetEntity(new Uri("-//W3C//Invalid URI ", UriKind.RelativeOrAbsolute)
                                                                     , null, typeof(string)));
        }
コード例 #10
0
ファイル: ZipUtils.cs プロジェクト: dteviot/MergeWebToEpub
        private static XmlReaderSettings GetXmlReaderSettings()
        {
            if (xmlReaderSettings == null)
            {
                var resolver = new XmlPreloadedResolver();
                resolver.AddDTD("http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd", "MergeWebToEpub.Resources.xhtml11-flat.dtd");

                xmlReaderSettings = new XmlReaderSettings
                {
                    DtdProcessing  = DtdProcessing.Parse,
                    ValidationType = ValidationType.DTD,
                    XmlResolver    = resolver,
                };
                xmlReaderSettings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
            }
            return(xmlReaderSettings);
        }
コード例 #11
0
        public void XmlResolverSupportsTypeWithValidData()
        {
            var  xmlResolver = new XmlPreloadedResolver();
            var  uri         = new Uri("-//W3C//DTD XHTML 1.0 Strict//EN", UriKind.RelativeOrAbsolute);
            bool result      = xmlResolver.SupportsType(uri, typeof(string));

            Assert.False(result);

            xmlResolver = new XmlPreloadedResolver(new XmlPreloadedResolver(), XmlKnownDtds.Xhtml10);
            Assert.True(xmlResolver.SupportsType(uri, typeof(Stream)));

            xmlResolver.Add(uri, "String Value");
            result = xmlResolver.SupportsType(uri, typeof(TextReader));
            Assert.True(result);

            result = xmlResolver.SupportsType(uri, null);
            Assert.True(result);
        }
コード例 #12
0
        public void XmlResolverWithFallbackResolverConstructor()
        {
            var fallbackResolver = new XmlPreloadedResolver(XmlKnownDtds.None);
            var resolver         = new XmlPreloadedResolver(fallbackResolver);

            string[] expectedUris = { "-//W3C//DTD XHTML 1.0 Strict//EN",                        "-//W3C//DTD XHTML 1.0 Transitional//EN",
                                      "-//W3C//ENTITIES Symbols for XHTML//EN",                  "-//W3C//ENTITIES Latin 1 for XHTML//EN",             "-//W3C//ENTITIES Symbols for XHTML//EN",
                                      "-//W3C//ENTITIES Special for XHTML//EN",                  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd",
                                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd",
                                      "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent",          "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent",
                                      "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent",       "-//Netscape Communications//DTD RSS 0.91//EN",
                                      "http://my.netscape.com/publish/formats/rss-0.91.dtd" };
            Assert.Equal(expectedUris.Length, resolver.PreloadedUris.Count());
            foreach (string uriString in expectedUris)
            {
                Assert.Contains(resolver.PreloadedUris, u => u.OriginalString.Equals(uriString));
            }
        }
コード例 #13
0
        public void XmlResolverGetEntityWithValidUserSuppliedData()
        {
            var uri = new Uri("-//W3C//DTD FAKE 1.0 Not Real//EN", UriKind.RelativeOrAbsolute);
            XmlPreloadedResolver xmlResolver =
                GetResolverWithStringData(XmlKnownDtds.Xhtml10, "Sample String Data", uri);
            Stream streamResult = xmlResolver.GetEntity(uri, null, null) as Stream;

            Assert.NotNull(streamResult);
            byte[] data = new byte[streamResult.Length];
            streamResult.Read(data, 0, Convert.ToInt32(streamResult.Length));
            Assert.Equal("Sample String Data", NormalizeContent(Encoding.ASCII.GetString(data)));

            uri         = new Uri("-//W3C//DTD FAKE 1.0 Not Real//EN", UriKind.RelativeOrAbsolute);
            xmlResolver = GetResolverWithStringData(XmlKnownDtds.Xhtml10, "Sample String Data", uri);
            TextReader textResult = xmlResolver.GetEntity(uri, null, typeof(TextReader)) as TextReader;

            Assert.NotNull(textResult);
            Assert.Equal("Sample String Data", textResult.ReadLine());
        }
コード例 #14
0
        public void XmlResolverSupportsTypeWithInvalidData()
        {
            var xmlResolver = new XmlPreloadedResolver();

            Assert.Throws <ArgumentNullException>(() => xmlResolver.SupportsType(null, null));

            xmlResolver = new XmlPreloadedResolver();
            var  uri    = new Uri("-//W3C//Dummy URI", UriKind.RelativeOrAbsolute);
            bool result = xmlResolver.SupportsType(uri, null);

            Assert.True(result);

            result = xmlResolver.SupportsType(uri, typeof(string));
            Assert.False(result);

            xmlResolver = new XmlPreloadedResolver(new XmlPreloadedResolver());
            result      = xmlResolver.SupportsType(uri, typeof(string));
            Assert.False(result);
        }
コード例 #15
0
        public void Add_CustomComparer()
        {
            var uriA      = new Uri("http://test.local/abc");
            var uriB      = new Uri("http://test.local/xyz");
            var resourceA = new byte[] { 43, 59 };
            var resourceB = new byte[] { 217, 24, 64 };

            var uriComparer = KeyEqualityComparer.Create((Uri uri) => uri.Host);
            var xmlResolver = new XmlPreloadedResolver(null, XmlKnownDtds.None, uriComparer);

            xmlResolver.Add(uriA, resourceA);
            xmlResolver.Add(uriB, resourceB, @override: false);

            VerifyResource(resourceA, xmlResolver, uriA);
            VerifyResource(resourceA, xmlResolver, uriB);

            xmlResolver.Add(uriB, resourceB, @override: true);

            VerifyResource(resourceB, xmlResolver, uriA);
            VerifyResource(resourceB, xmlResolver, uriB);
        }
コード例 #16
0
        public XSLTValidator(string languageName, XsltArgumentList xsltArgumentList)
        {
            if (null == xsltArgumentList)
            {
                throw new ArgumentNullException("xsltArgumentList");
            }
            _xslArg = xsltArgumentList;
            _xslt   = new XslCompiledTransform();

            var assembly = this.GetType().Assembly;
            var resolver = new XmlPreloadedResolver();

            string mainXSLT = null;

            string[] resourceNames = this.GetType().Assembly.GetManifestResourceNames();
            foreach (string resourceName in resourceNames)
            {
                if (resourceName.EndsWith(".xslt") && resourceName.Contains(languageName))
                {
                    string templateName = resourceName.Substring(resourceName.LastIndexOf(languageName) + languageName.Length);
                    if (templateName == ".xslt")
                    {
                        mainXSLT = resourceName;
                    }
                    else
                    {
                        using (var stream = assembly.GetManifestResourceStream(resourceName))
                        {
                            resolver.Add(resolver.ResolveUri(null, templateName), stream);
                        }
                    }
                }
            }
            using (var stream = assembly.GetManifestResourceStream(mainXSLT))
                using (var reader = XmlReader.Create(stream))
                {
                    _xslt.Load(reader, null, resolver);
                }
        }
コード例 #17
0
        public void AddXhtml11_XDocument()
        {
            var xmlResolver = new XmlPreloadedResolver();

            xmlResolver.AddXhtml11();

            XmlReaderSettings settings = new XmlReaderSettings();

            settings.DtdProcessing = DtdProcessing.Parse;
            settings.XmlResolver   = xmlResolver;

            XDocument document;

            using (var stringReader = new StringReader(sampleXhtml))
                using (var xmlReader = XmlReader.Create(stringReader, settings))
                    document = XDocument.Load(xmlReader);

            XNamespace ns   = "http://www.w3.org/1999/xhtml";
            var        span = document.Descendants(ns + "span").Single();

            Assert.AreEqual(" ®µ½Σ", span.Value);
        }
コード例 #18
0
        public void XmlResolverGetKnownEntity()
        {
            var xmlResolver = new XmlPreloadedResolver(XmlKnownDtds.All);

            foreach (var dtdInfo in GetKnownDtds())
            {
                string expectedContent = NormalizeContent(File.ReadAllText(dtdInfo.SourcePath));

                var    uri          = new Uri(dtdInfo.PublicId, UriKind.RelativeOrAbsolute);
                Stream streamResult = xmlResolver.GetEntity(uri, null, null) as Stream;
                Assert.NotNull(streamResult);
                byte[] data = new byte[streamResult.Length];
                streamResult.Read(data, 0, Convert.ToInt32(streamResult.Length));
                Assert.Equal(expectedContent, NormalizeContent(Encoding.ASCII.GetString(data)));

                uri          = new Uri(dtdInfo.SystemId, UriKind.RelativeOrAbsolute);
                streamResult = xmlResolver.GetEntity(uri, null, null) as Stream;
                Assert.NotNull(streamResult);
                data = new byte[streamResult.Length];
                streamResult.Read(data, 0, Convert.ToInt32(streamResult.Length));
                Assert.Equal(expectedContent, NormalizeContent(Encoding.ASCII.GetString(data)));
            }
        }
コード例 #19
0
        public void XmlResolverAddWithInvalidData()
        {
            var xmlResolver = new XmlPreloadedResolver();

            Assert.Throws <ArgumentNullException>(() => xmlResolver.Add(null, new byte[22]));

            Assert.Throws <ArgumentNullException>(() => xmlResolver.Add(new Uri("https://html"), null as byte[]));

            Assert.Throws <ArgumentNullException>(() => xmlResolver.Add(null, null, 0, 0));
            Assert.Throws <ArgumentNullException>(() => xmlResolver.Add(new Uri("https://html"), null, 0, 0));
            Assert.Throws <ArgumentOutOfRangeException>(() => xmlResolver.Add(new Uri("https://html"), new byte[22], -1, 0));
            Assert.Throws <ArgumentOutOfRangeException>(() => xmlResolver.Add(new Uri("https://html"), new byte[22], 0, -1));
            Assert.Throws <ArgumentOutOfRangeException>(() => xmlResolver.Add(new Uri("https://html"), new byte[11], 5, 20));

            //No Exception should be thrown for the below cases as these are border cases
            xmlResolver.Add(new Uri("https://html"), new byte[0], 0, 0);
            xmlResolver.Add(new Uri("https://html"), new byte[5], 0, 5);

            Assert.Throws <ArgumentNullException>(() => xmlResolver.Add(null, new MemoryStream()));
            Assert.Throws <ArgumentNullException>(() => xmlResolver.Add(new Uri("https://html"), null as MemoryStream));

            Assert.Throws <ArgumentNullException>(() => xmlResolver.Add(null, string.Empty));
            Assert.Throws <ArgumentNullException>(() => xmlResolver.Add(new Uri("https://html"), null as string));
        }
コード例 #20
0
        protected override void Render(HtmlTextWriter writer)
        {
            StringBuilder  sbOut  = new StringBuilder();
            StringWriter   swOut  = new StringWriter(sbOut);
            HtmlTextWriter htwOut = new HtmlTextWriter(swOut);

            base.Render(htwOut);

            string originalHTML = sbOut.ToString();

            if ("true".Equals(Context.Items["EmailRequest"]))
            {
                XmlDocument document = new XmlDocument();

                string xhtmlStr = sbOut.ToString();

                XmlPreloadedResolver resolver = new XmlPreloadedResolver();
                resolver.Add(resolver.ResolveUri(null, "Static/xhtml-trans10.dtd"), xhtmlStr);
                XmlReaderSettings readerSettings = new XmlReaderSettings();
                readerSettings.XmlResolver   = resolver;
                readerSettings.DtdProcessing = DtdProcessing.Parse;

                StringReader sr     = new StringReader(xhtmlStr);
                XmlReader    reader = XmlReader.Create(sr, readerSettings);

                document.Load(reader);
                XmlElement          root  = document.DocumentElement;
                XmlNamespaceManager nsmgr = new XmlNamespaceManager(document.NameTable);
                nsmgr.AddNamespace("h", document.DocumentElement.NamespaceURI);

                RewriteImageURLs(root.SelectNodes("//h:img", nsmgr));
                RewriteCSSPaths(root.SelectNodes("//h:link", nsmgr));
                TransformNodes(document, root.SelectNodes("//h:a", nsmgr), "span");
                DeleteNodes(root.SelectNodes("//h:div[@id='inventory-graph']", nsmgr));
                DeleteNodes(root.SelectNodes("//h:div[@id='chart']", nsmgr));
                DeleteNodes(root.SelectNodes("//h:script", nsmgr));
                DeleteNodes(root.SelectNodes("//h:input[@type='hidden']", nsmgr));
                // this bit of xpath gets all elements that have onclick attributes
                RemoveOnClickEvents(root.SelectNodes("self::node()/descendant-or-self::node()[@onclick]", nsmgr));


                string reportHTML =
                    "<!DOCTYPE html PUBLIC \" -//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
                reportHTML    += document.DocumentElement.OuterXml;
                _message.Body += "<br/>" + reportHTML;

                if (Context.Items["EmailAttachmentName"].ToString().EndsWith("pdf"))
                {
                    PdfService service = new PdfService();
                    byte[]     pdf     = service.GeneratePdf(reportHTML);

                    _message.Attachments.Add(new Attachment(new MemoryStream(pdf),
                                                            Context.Items["EmailAttachmentName"].ToString()));
                }
                else if (Context.Items["EmailAttachmentName"].ToString().EndsWith("html"))
                {
                    ASCIIEncoding encoder = new ASCIIEncoding();
                    _message.Attachments.Add(new Attachment(new MemoryStream(encoder.GetBytes(reportHTML)),
                                                            Context.Items["EmailAttachmentName"].ToString()));
                }

                SmtpClient client = new SmtpClient();
                client.Send(_message);
            }

            writer.Write(originalHTML);
        }
コード例 #21
0
        public void XmlResolverResolveUriWithEmptyUri()
        {
            var resolver = new XmlPreloadedResolver(XmlKnownDtds.Xhtml10);

            Assert.Throws <ArgumentNullException>(() => resolver.ResolveUri(null, null));
        }
コード例 #22
0
 public static void AddXhtml11(this XmlPreloadedResolver resolver, bool @override = false)
 {
     Add(resolver, new Uri(Xhtml11DtdPublicId, UriKind.RelativeOrAbsolute), ManifestResources.xhtml11_flat_dtd, @override);
     Add(resolver, new Uri(Xhtml11DtdSystemId, UriKind.RelativeOrAbsolute), ManifestResources.xhtml11_flat_dtd, @override);
 }
コード例 #23
0
        public void XmlResolverGetEntityWithNullUri()
        {
            var xmlResolver = new XmlPreloadedResolver(XmlKnownDtds.None);

            Assert.Throws <ArgumentNullException>(() => xmlResolver.GetEntity(null, null, null));
        }
コード例 #24
0
        public void XmlResolverWithDefaultConstructor()
        {
            var resolver = new XmlPreloadedResolver();

            Assert.Equal(14, resolver.PreloadedUris.Count());
        }
コード例 #25
0
        public void XmlResolverRemoveWithInvalidData()
        {
            var xmlResolver = new XmlPreloadedResolver(XmlKnownDtds.Xhtml10);

            Assert.Throws <ArgumentNullException>(() => xmlResolver.Remove(null));
        }