XmlValidatingReader.XmlResolver Property
Sets the XmlResolver used for resolving external DTD and schema location references. The XmlResolver is also used to handle any import or include elements found in XML Schema definition language (XSD) schemas.
[Visual Basic] Property XmlResolver As XmlResolver [C#] XmlResolver XmlResolver {set;} [C++] public: __property void set_XmlResolver(XmlResolver*); [JScript] public function set XmlResolver(XmlResolver);
Property Value
The XmlResolver to use. If set to a null reference (Nothing in Visual Basic), external resources are not resolved.
In version 1.1 of the .NET Framework, the caller must be fully-trusted in order to specify an XmlResolver.
Remarks
The XmlResolver is used to load any DTDs, entities or schemas needed to complete the validation process.
This property can be set at any time and takes affect after the next Read call. If this property is set to a null reference (Nothing in Visual Basic), the reader assumes the user is not interested in resolving external references. In this case, the reader only validates against internal resources, if the resource is present.
In version 1.1 of the .NET Framework, if this property is not set, the trust level of the application determines the default behavior.
Fully-trusted code: The reader uses a default XmlUrlResolver with no user credentials. If authentication is required to access a network resource, use the XmlResolver property to specify an XmlResolver with the necessary credentials.
Semi-trusted code: The XmlResolver property is set to a null reference (Nothing). External resources are not resolved.
When validating using XML-Data Reduced (XDR) or XML Schema (XSD), you can avoid the expensive load process by providing an XmlSchemaCollection using the Schemas property.
Example
[Visual Basic, C#, C++] The following example uses the XmlResolver property to specify the credentials necessary to access the networked DTD file.
[Visual Basic] ' Create the reader. Dim txtreader as XmlTextReader = new XmlTextReader("book5.xml") Dim reader as XmlValidatingReader = new XmlValidatingReader(txtreader) txtreader.WhitespaceHandling = WhitespaceHandling.None ' Set the credentials necessary to access the DTD file stored on the network. Dim resolver as XmlUrlResolver = new XmlUrlResolver() resolver.Credentials = System.Net.CredentialCache.DefaultCredentials reader.XmlResolver = resolver ' Display each of the element nodes. while (reader.Read()) select case reader.NodeType case XmlNodeType.Element: Console.Write("<{0}>", reader.Name) case XmlNodeType.Text: Console.Write(reader.Value) case XmlNodeType.DocumentType: Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value) case XmlNodeType.EntityReference: Console.Write(reader.Name) case XmlNodeType.EndElement: Console.Write("</{0}>", reader.Name) end select end while [C#] // Create the reader. XmlTextReader txtreader = new XmlTextReader("book5.xml"); XmlValidatingReader reader = new XmlValidatingReader(txtreader); txtreader.WhitespaceHandling = WhitespaceHandling.None; // Set the credentials necessary to access the DTD file stored on the network. XmlUrlResolver resolver = new XmlUrlResolver(); resolver.Credentials = System.Net.CredentialCache.DefaultCredentials; reader.XmlResolver = resolver; // Display each of the element nodes. while (reader.Read()){ switch (reader.NodeType){ case XmlNodeType.Element: Console.Write("<{0}>", reader.Name); break; case XmlNodeType.Text: Console.Write(reader.Value); break; case XmlNodeType.DocumentType: Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value); break; case XmlNodeType.EntityReference: Console.Write(reader.Name); break; case XmlNodeType.EndElement: Console.Write("</{0}>", reader.Name); break; } } [C++] // Create the reader. -> XmlTextReader* txtreader = new XmlTextReader(S"book5.xml"); XmlValidatingReader* reader = new XmlValidatingReader(txtreader); txtreader -> WhitespaceHandling = WhitespaceHandling::None; // Set the credentials necessary to access the DTD file stored on the network. XmlUrlResolver* resolver = new XmlUrlResolver(); resolver -> Credentials = System::Net::CredentialCache::DefaultCredentials; reader -> XmlResolver = resolver; // Display each of the element nodes. while (reader -> Read()) { switch (reader -> NodeType) { case XmlNodeType::Element: Console::Write(S"< {0}>", reader->Name); break; case XmlNodeType::Text: Console::Write(reader->Value); break; case XmlNodeType::DocumentType: Console::Write(S"<!DOCTYPE {0} [ {1}]", reader->Name, reader->Value); break; case XmlNodeType::EntityReference: Console::Write(reader->Name); break; case XmlNodeType::EndElement: Console::Write(S"</ {0}>", reader->Name); break; } }
[Visual Basic, C#, C++] The example uses the following files as input.
[Visual Basic, C#, C++] book5.xml
<!DOCTYPE book SYSTEM 'http://myServer/DTDs/books.dtd'> <book ISBN = '1-861001-57-5'> <title>Pride And Prejudice</title> <price>19.95</price> <misc>&h;</misc> </book>
books.dtd
<!ELEMENT book (title,price,misc)> <!ATTLIST book genre CDATA "novel" ISBN CDATA #REQUIRED> <!ELEMENT title (#PCDATA)> <!ELEMENT price (#PCDATA)> <!ELEMENT misc (#PCDATA)> <!ENTITY h "hardcover"> <!ENTITY p "paperback">
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family
See Also
XmlValidatingReader Class | XmlValidatingReader Members | System.Xml Namespace | XmlUrlResolver.Credentials | CredentialCache | NetworkCredential | XmlSecureResolver