Udostępnij za pośrednictwem


XmlValidatingReader.XmlResolver Właściwość

Definicja

XmlResolver Ustawia używane do rozpoznawania odwołań typu dokumentu zewnętrznego (DTD) i lokalizacji schematu. Element XmlResolver jest również używany do obsługi dowolnego importu lub dołączania elementów znalezionych w schematach języka definicji schematu XML (XSD).

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

Wartość właściwości

XmlResolver

Element XmlResolver do użycia. Jeśli ustawiono wartość null, zasoby zewnętrzne nie zostaną rozwiązane.

W wersji 1.1 .NET Framework obiekt wywołujący musi być w pełni zaufany, aby określić element XmlResolver.

Przykłady

W poniższym przykładzie użyto XmlResolver właściwości , aby określić poświadczenia niezbędne do uzyskania dostępu do sieciowego pliku DTD.

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

W przykładzie użyto następujących plików jako danych wejściowych.

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

Uwagi

Uwaga

Klasa XmlValidatingReader jest przestarzała w .NET Framework 2.0. Wystąpienie sprawdzania poprawności XmlReader można utworzyć przy użyciu XmlReaderSettings klasy i Create metody . Aby uzyskać więcej informacji, zobacz sekcję Uwagi na stronie referencyjnej XmlReader .

Element XmlResolver służy do ładowania wszelkich dtD, jednostek lub schematów potrzebnych do ukończenia procesu weryfikacji.

Tę właściwość można ustawić w dowolnym momencie i wpływać po następnym Read wywołaniu. Jeśli ta właściwość jest ustawiona na nullwartość , czytelnik zakłada, że użytkownik nie jest zainteresowany rozpoznawaniem odwołań zewnętrznych. W takim przypadku czytelnik sprawdza poprawność tylko względem zasobów wewnętrznych, jeśli zasób jest obecny.

Jeśli ta właściwość nie jest ustawiona w wersji 1.1 .NET Framework, poziom zaufania aplikacji określa domyślne zachowanie.

Fully trusted code: Czytelnik używa wartości domyślnej XmlUrlResolver bez poświadczeń użytkownika. Jeśli wymagane jest uwierzytelnienie w celu uzyskania dostępu do zasobu sieciowego, użyj XmlResolver właściwości , aby określić element XmlResolver z wymaganymi poświadczeniami.

Semi-trusted code: Właściwość jest ustawiona XmlResolver na nullwartość . Zasoby zewnętrzne nie są rozwiązywane.

Podczas walidacji przy użyciu schematów można uniknąć kosztownego procesu ładowania, udostępniając XmlSchemaCollection właściwość Schemas .

Dotyczy

Zobacz też