Condividi tramite


XmlDocument.XmlResolver Proprietà

Definizione

Imposta l'oggetto XmlResolver da usare per risolvere risorse esterne.

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

Valore della proprietà

XmlResolver

Oggetto XmlResolver da usare.

Nella versione 1.1 di .NET Framework, per specificare XmlResolver, è necessario che il chiamante sia completamente attendibile.

Eccezioni

Questa proprietà è impostata su null e viene rilevata un'entità o DTD esterna.

Esempio

Nell'esempio seguente viene caricato un documento XML che include un riferimento a un file DTD. La XmlResolver proprietà viene utilizzata per impostare le credenziali necessarie per accedere alla risorsa di rete.

#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

Nell'esempio vengono usati i file di dati seguenti come 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">

Commenti

Può XmlResolver essere usato per caricare DTD o espandere i riferimenti alle entità. Usando la XmlResolver.Credentials proprietà , è possibile impostare le credenziali in XmlResolver per accedere alle risorse archiviate in una risorsa di rete sicura.

  • Se il documento non è stato caricato utilizzando un XmlReader oggetto , ovvero se è stato caricato usando un flusso, un file e così via, viene sempre usato in XmlResolver .XmlDocument

  • Se il documento è stato caricato con un XmlTextReader, il sistema di risoluzione in XmlTextReader viene usato per risolvere eventuali riferimenti DTD nel nodo DocumentType. Il resolver in XmlDocument viene usato per espandere i riferimenti a qualsiasi entità.

  • Se il documento è stato caricato con un XmlValidatingReader, il sistema di risoluzione in XmlDocument non viene mai utilizzato.

  • Se il documento è stato caricato con una classe che estende XmlReader e non XmlReader può risolvere le entità (CanResolveEntity restituisce false), viene usato in XmlResolver XmlDocument per risolvere eventuali riferimenti nel nodo DocumentType e per espandere eventuali riferimenti a entità.

Nota

Se l'oggetto XmlDocument viene caricato utilizzando un XmlResolver XmlReader oggetto impostato su di esso, l'oggetto in XmlResolver XmlReader non viene memorizzato nella cache da dopo Load il XmlDocument completamento.

Nella versione 1.1 di the.NET Framework, se questa proprietà non è impostata, il livello di attendibilità dell'applicazione determina il comportamento predefinito.

Fully trusted code: Il documento usa un valore predefinito XmlUrlResolver senza credenziali utente. Se l'autenticazione è necessaria per accedere a una risorsa di rete, usare la XmlResolver proprietà per specificare un XmlResolver oggetto con le credenziali necessarie.

Semi-trusted code: La XmlResolver proprietà è impostata su null. Le risorse esterne non vengono risolte.

Per altre informazioni sulla sicurezza e sulla XmlResolver proprietà , vedere Risoluzione delle risorse esterne.

Questa proprietà è un'estensione Microsoft di Document Object Model (DOM).

Si applica a

Vedi anche