XmlDocument.XmlResolver Property
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Sets the XmlResolver to use for resolving external resources.
public:
virtual property System::Xml::XmlResolver ^ XmlResolver { void set(System::Xml::XmlResolver ^ value); };
public virtual System.Xml.XmlResolver XmlResolver { set; }
public virtual System.Xml.XmlResolver? XmlResolver { set; }
member this.XmlResolver : System.Xml.XmlResolver
Public Overridable Property XmlResolver As XmlResolver
Property Value
The XmlResolver
to use.
In version 1.1 of the.NET Framework, the caller must be fully trusted in order to specify an XmlResolver
.
Exceptions
This property is set to null
and an external DTD or entity is encountered.
Examples
The following example loads an XML document which includes a reference to a DTD file. The XmlResolver
property is used to set the credentials necessary to access the network resource.
#using <System.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Net;
int main()
{
// Supply the credentials necessary to access the DTD file stored on the network.
XmlUrlResolver^ resolver = gcnew XmlUrlResolver;
resolver->Credentials = CredentialCache::DefaultCredentials;
// Create and load the XmlDocument.
XmlDocument^ doc = gcnew XmlDocument;
doc->XmlResolver = resolver; // Set the resolver.
doc->Load( "book5.xml" );
// Display the entity replacement text which is pulled from the DTD file.
Console::WriteLine( doc->DocumentElement->LastChild->InnerText );
}
using System;
using System.IO;
using System.Xml;
using System.Net;
public class Sample {
public static void Main() {
// Supply the credentials necessary to access the DTD file stored on the network.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = CredentialCache.DefaultCredentials;
// Create and load the XmlDocument.
XmlDocument doc = new XmlDocument();
doc.XmlResolver = resolver; // Set the resolver.
doc.Load("book5.xml");
// Display the entity replacement text which is pulled from the DTD file.
Console.WriteLine(doc.DocumentElement.LastChild.InnerText);
}
} // End class
Imports System.IO
Imports System.Xml
Imports System.Net
public class Sample
public shared sub Main()
' Supply the credentials necessary access the DTD file stored on the network.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
resolver.Credentials = CredentialCache.DefaultCredentials
' Create and load the XmlDocument.
Dim doc as XmlDocument = new XmlDocument()
doc.XmlResolver = resolver ' Set the resolver.
doc.Load("book5.xml")
' Display the entity replacement text which is pulled from the DTD file.
Console.WriteLine(doc.DocumentElement.LastChild.InnerText)
end sub
end class
The example uses the following data files as input.
book5.xml
<!DOCTYPE book SYSTEM 'http://myServer/data/books.dtd'>
<book ISBN = '1-861001-57-5'>
<title>Oberon's Legacy</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">
Remarks
The XmlResolver
can be used to load DTDs or expand entity references. Using the XmlResolver.Credentials property, you can set credentials on the XmlResolver
to access resources stored on a secure network resource.
If the document was not loaded using an XmlReader (that is, if it was loaded using a stream, file, and so on) the
XmlResolver
on theXmlDocument
is always used.If the document was loaded with an XmlTextReader, the resolver on the
XmlTextReader
is used to resolve any DTD references in the DocumentType node. The resolver on theXmlDocument
is used to expand any entity references.If the document was loaded with an XmlValidatingReader, the resolver on the
XmlDocument
is never used.If the document was loaded with a class that extends
XmlReader
and theXmlReader
cannot resolve entities (CanResolveEntity returnsfalse
), theXmlResolver
on theXmlDocument
is used to resolve any references in the DocumentType node and to expand any entity references.
Note
If the XmlDocument
is loaded using an XmlReader which had an XmlResolver
set to it, the XmlResolver
on the XmlReader
is not cached by the XmlDocument
after Load completes.
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 document 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 null
. External resources are not resolved.
For more information on security and the XmlResolver
property, see Resolving External Resources.
This property is a Microsoft extension to the Document Object Model (DOM).