Condividi tramite


XmlValidatingReader.XmlResolver Proprietà

Definizione

Imposta l'oggetto XmlResolver usato per risolvere i riferimenti delle posizioni di DTD (Document Type Definition) e di schemi esterni. L'oggetto XmlResolver viene usato anche per gestire eventuali operazioni di importazione o per includere gli elementi che si trovano negli schemi XSD (XML Schema Definition Language).

public:
 property System::Xml::XmlResolver ^ XmlResolver {  void set(System::Xml::XmlResolver ^ value); };
public System.Xml.XmlResolver XmlResolver { set; }
member this.XmlResolver : System.Xml.XmlResolver
Public Property XmlResolver As XmlResolver

Valore della proprietà

XmlResolver

Oggetto XmlResolver da usare. Se impostato su null, le risorse esterne non verranno risolte.

Nella versione 1.1 di .NET Framework, il chiamante deve essere completamente attendibile per specificare un .XmlResolver

Esempio

Nell'esempio seguente viene utilizzata la XmlResolver proprietà per specificare le credenziali necessarie per accedere al file DTD di rete.

   // Create the reader. -> 
   XmlTextReader^ txtreader = gcnew XmlTextReader( "book5.xml" );
   XmlValidatingReader^ reader = gcnew XmlValidatingReader( txtreader );
   txtreader->WhitespaceHandling = WhitespaceHandling::None;
   
   // Set the credentials necessary to access the DTD file stored on the network.
   XmlUrlResolver^ resolver = gcnew 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;
      }
   }

   
   // Close the reader.
   reader->Close();
}

// 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;
  }
}
' 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           

Nell'esempio vengono usati i file seguenti come input.

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

Commenti

Nota

La XmlValidatingReader classe è obsoleta in .NET Framework 2.0. È possibile creare un'istanza di XmlReader convalida usando la XmlReaderSettings classe e il Create metodo . Per altre informazioni, vedere la sezione Note della pagina di riferimento XmlReader.

viene XmlResolver usato per caricare tutti i DTD, le entità o gli schemi necessari per completare il processo di convalida.

Questa proprietà può essere impostata in qualsiasi momento e ha effetto dopo la chiamata successiva Read . Se questa proprietà è impostata su null, il lettore presuppone che l'utente non sia interessato a risolvere i riferimenti esterni. In questo caso, il lettore convalida solo le risorse interne, se la risorsa è presente.

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

Fully trusted code: Il lettore 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.

Quando si convalidano gli schemi, è possibile evitare il processo di caricamento costoso fornendo un XmlSchemaCollection oggetto usando la Schemas proprietà .

Si applica a

Vedi anche