Compartir a través de


XmlDocument.XmlResolver Propiedad

Definición

Establece el objeto XmlResolver para usarlo en la resolución de recursos externos.

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

Valor de propiedad

Objeto XmlResolver que se va a usar.

En la versión 1.1 de .NET Framework, el llamador debe ser de confianza para especificar un XmlResolver.

Excepciones

Esta propiedad se establece en null y se encuentra una DTD o entidad externa.

Ejemplos

En el ejemplo siguiente se carga un documento XML que incluye una referencia a un archivo DTD. La XmlResolver propiedad se usa para establecer las credenciales necesarias para acceder al recurso de red.

#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

En el ejemplo se usan los siguientes archivos de datos como entrada.

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">

Comentarios

XmlResolver se puede usar para cargar DTD o expandir referencias de entidad. Con la XmlResolver.Credentials propiedad , puede establecer credenciales en para XmlResolver acceder a los recursos almacenados en un recurso de red seguro.

  • Si el documento no se cargó mediante (XmlReaderes decir, si se cargó mediante una secuencia, un archivo, etc.), siempre se usa en .XmlDocumentXmlResolver

  • Si el documento se cargó con , XmlTextReaderla resolución de XmlTextReader se usa para resolver las referencias de DTD en el nodo DocumentType. El solucionador de XmlDocument se usa para expandir cualquier referencia de entidad.

  • Si el documento se cargó con , XmlValidatingReadernunca se usará el solucionador en .XmlDocument

  • Si el documento se cargó con una clase que extiende XmlReader y no XmlReader puede resolver entidades (CanResolveEntity devuelve false), se usa en XmlResolver para XmlDocument resolver las referencias en el nodo DocumentType y para expandir las referencias de entidad.

Nota:

XmlDocument Si se carga mediante un objeto XmlReader que tenía un XmlResolver conjunto en él, el XmlResolver elemento de XmlReader no se almacena en caché después Load de completarseXmlDocument.

En la versión 1.1 de the.NET Framework, si no se establece esta propiedad, el nivel de confianza de la aplicación determina el comportamiento predeterminado.

Fully trusted code: El documento usa un valor predeterminado XmlUrlResolver sin credenciales de usuario. Si se requiere autenticación para acceder a un recurso de red, use la XmlResolver propiedad para especificar una XmlResolver con las credenciales necesarias.

Semi-trusted code: La XmlResolver propiedad se establece en null. Los recursos externos no se resuelven.

Para obtener más información sobre la seguridad y la XmlResolver propiedad , vea Resolver recursos externos.

Esta propiedad es una extensión de Microsoft para Document Object Model (DOM).

Se aplica a

Consulte también