ResolveEntity() public method

public ResolveEntity ( ) : void
return void
Esempio n. 1
0
        // Creates a XmlValidatingReader suitable for parsing InnerXml strings
        private XmlReader CreateInnerXmlValidatingReader(String xmlFragment, XmlNodeType nt, XmlParserContext context, XmlDocument doc)
        {
            XmlNodeType contentNT = nt;

            if (contentNT == XmlNodeType.Entity || contentNT == XmlNodeType.EntityReference)
            {
                contentNT = XmlNodeType.Element;
            }
            XmlValidatingReader xmlvr = new XmlValidatingReader(xmlFragment, contentNT, context);

            if (doc.DocumentType != null)
            {
                xmlvr.Namespaces = doc.DocumentType.ParseWithNamespaces;
            }
            if (doc.HasSetResolver)
            {
                xmlvr.XmlResolver = doc.GetResolver();
            }
            xmlvr.ValidationType = ValidationType.None;
            if (!(doc.ActualLoadingStatus))
            {
                xmlvr.DisableUndeclaredEntityCheck = true;
            }
            // all these settings are alreay the default setting in XmlTextReader
            xmlvr.EntityHandling = EntityHandling.ExpandCharEntities;
            if (nt == XmlNodeType.Entity || nt == XmlNodeType.EntityReference)
            {
                xmlvr.Read(); //this will skip the first element "wrapper"
                xmlvr.ResolveEntity();
            }
            return(xmlvr);
        }
Esempio n. 2
0
		public void ResolveEntity2 ()
		{
			string ent1 = "<!ENTITY ent 'entity string'>";
			string ent2 = "<!ENTITY ent2 '<foo/><foo/>'>]>";
			string dtd = "<!DOCTYPE root[<!ELEMENT root (#PCDATA|foo)*>" + ent1 + ent2;
			string xml = dtd + "<root>&ent3;&ent2;</root>";
			dvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
			dvr.ValidationType = ValidationType.None;
			dvr.EntityHandling = EntityHandling.ExpandCharEntities;
			dvr.Read ();	// DTD
			dvr.Read ();	// root
			dvr.Read ();	// &ent3;
			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
#if NET_2_0
			// under .NET 2.0, an error is raised here.
			// under .NET 1.1, the error is thrown on the next read.
			try {
				dvr.ResolveEntity ();
				Assert.Fail ("Attempt to resolve undeclared entity should fail.");
			} catch (XmlException) {
			}
#else
			// ent3 does not exist in this dtd.
			dvr.ResolveEntity ();
			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
			try {
				dvr.Read ();
				Assert.Fail ("Attempt to resolve undeclared entity should fail.");
			} catch (XmlException) {
			}
#endif
		}
Esempio n. 3
0
		public void ResolveEntity ()
		{
			string ent1 = "<!ENTITY ent 'entity string'>";
			string ent2 = "<!ENTITY ent2 '<foo/><foo/>'>]>";
			string dtd = "<!DOCTYPE root[<!ELEMENT root (#PCDATA|foo)*>" + ent1 + ent2;
			string xml = dtd + "<root>&ent;&ent2;</root>";
			dvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
			dvr.ValidationType = ValidationType.None;
			dvr.EntityHandling = EntityHandling.ExpandCharEntities;
			dvr.Read ();	// DTD
			dvr.Read ();	// root
			dvr.Read ();	// &ent;
			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
			Assert.AreEqual (1, dvr.Depth);
			dvr.ResolveEntity ();
			// It is still entity reference.
			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
			dvr.Read ();
			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
			Assert.AreEqual (2, dvr.Depth);
			Assert.AreEqual ("entity string", dvr.Value);
			dvr.Read ();
			Assert.AreEqual (XmlNodeType.EndEntity, dvr.NodeType);
			Assert.AreEqual (1, dvr.Depth);
			Assert.AreEqual (String.Empty, dvr.Value);

			dvr.Read ();	// &ent2;
			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
			Assert.AreEqual (1, dvr.Depth);
			dvr.ResolveEntity ();
			// It is still entity reference.
			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
			// It now became element node.
			dvr.Read ();
			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
			Assert.AreEqual (2, dvr.Depth);
		}
Esempio n. 4
0
 // Creates a XmlValidatingReader suitable for parsing InnerXml strings
 private XmlReader CreateInnerXmlValidatingReader( String xmlFragment, XmlNodeType nt, XmlParserContext context, XmlDocument doc ) {
     XmlNodeType contentNT = nt;
     if ( contentNT == XmlNodeType.Entity || contentNT == XmlNodeType.EntityReference )
         contentNT = XmlNodeType.Element;
     XmlValidatingReader xmlvr = new XmlValidatingReader( xmlFragment, contentNT, context);
     if( doc.DocumentType != null )
         xmlvr.Namespaces = doc.DocumentType.ParseWithNamespaces;
     if ( doc.HasSetResolver )
         xmlvr.XmlResolver = doc.GetResolver();
     xmlvr.ValidationType = ValidationType.None;
     if( !( doc.ActualLoadingStatus ) )
         xmlvr.DisableUndeclaredEntityCheck = true;
     // all these settings are alreay the default setting in XmlTextReader
     xmlvr.EntityHandling = EntityHandling.ExpandCharEntities;
     if ( nt == XmlNodeType.Entity || nt == XmlNodeType.EntityReference ) {
         xmlvr.Read(); //this will skip the first element "wrapper"
         xmlvr.ResolveEntity();
     }
     return xmlvr;
 }