XmlValidatingReader.XmlResolver プロパティ


外部ドキュメント型定義 (DTD) およびスキーマ位置参照を解決するために使用する XmlResolver を設定します。Sets the XmlResolver used for resolving external document type definition (DTD) and schema location references. XmlResolver は、XML スキーマ定義言語 (XSD) スキーマで見つかったインポート要素またはインクルード要素を処理するためにも使用されます。The XmlResolver is also used to handle any import or include elements found in XML Schema definition language (XSD) schemas.

 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



使用する XmlResolver です。The XmlResolver to use. null に設定されていると、外部リソースが解決されません。If set to null, external resources are not resolved.

.NET Framework.NET Framework バージョン 1.1 の場合、XmlResolver を指定するには呼び出し元が完全に信頼されている必要があります。In version 1.1 of the .NET Framework.NET Framework, the caller must be fully trusted to specify an XmlResolver.

次の例では、XmlResolver プロパティを使用して、ネットワーク化された DTD ファイルにアクセスするために必要な資格情報を指定します。The following example uses the XmlResolver property to specify the credentials necessary to access the networked DTD file.

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

         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 );

   // Close the reader.

// 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);
     case XmlNodeType.Text:
     case XmlNodeType.DocumentType:
       Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value);
     case XmlNodeType.EntityReference:
     case XmlNodeType.EndElement:
       Console.Write("</{0}>", reader.Name);
' 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:
     case XmlNodeType.DocumentType:
       Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value)
     case XmlNodeType.EntityReference:
     case XmlNodeType.EndElement:
       Console.Write("</{0}>", reader.Name)
   end select        
end while           

この例では、入力として次のファイルを使用します。The example uses the following files as input.


<!DOCTYPE book SYSTEM 'http://myServer/DTDs/books.dtd'>
<book ISBN = '1-861001-57-5'>
  <title>Pride And Prejudice</title>


<!ELEMENT book (title,price,misc)> 
<!ATTLIST book 
   genre CDATA "novel"
<!ELEMENT title (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ENTITY h "hardcover">
<!ENTITY p "paperback">



XmlValidatingReader クラスは .NET Framework 2.0.NET Framework 2.0では廃止されています。The XmlValidatingReader class is obsolete in .NET Framework 2.0.NET Framework 2.0. XmlReaderSettings クラスと Create メソッドを使用して、検証 XmlReader インスタンスを作成できます。You can create a validating XmlReader instance by using the XmlReaderSettings class and the Create method. 詳細については、XmlReader のリファレンス ページの「解説」を参照してください。For more information, see the Remarks section of the XmlReader reference page.

XmlResolver は、検証プロセスを完了するために必要な Dtd、エンティティ、またはスキーマを読み込むために使用されます。The XmlResolver is used to load any DTDs, entities, or schemas needed to complete the validation process.

このプロパティは、いつでも設定でき、次の Read を呼び出した後に有効になります。This property can be set at any time and takes affect after the next Read call. このプロパティが nullに設定されている場合、リーダーは、ユーザーが外部参照を解決することを想定していないことを前提としています。If this property is set to null, the reader assumes the user is not interested in resolving external references. この場合、リーダーは、リソースが存在する場合にのみ内部リソースに対して検証します。In this case, the reader only validates against internal resources, if the resource is present.

.NET Framework.NET Framework のバージョン1.1 では、このプロパティが設定されていない場合、アプリケーションの信頼レベルによって既定の動作が決定されます。In version 1.1 of .NET Framework.NET Framework , if this property is not set, the trust level of the application determines the default behavior.

リーダーがユーザー資格情報なしで既定の XmlUrlResolver を使用する Fully trusted code: ます。Fully trusted code: The reader uses a default XmlUrlResolver with no user credentials. ネットワークリソースにアクセスするために認証が必要な場合は、XmlResolver プロパティを使用して、必要な資格情報を持つ XmlResolver を指定します。If authentication is required to access a network resource, use the XmlResolver property to specify an XmlResolver with the necessary credentials.

Semi-trusted code: XmlResolver プロパティが nullに設定されています。Semi-trusted code: The XmlResolver property is set to null. 外部リソースは解決されません。External resources are not resolved.

スキーマを使用して検証する場合は、Schemas プロパティを使用して XmlSchemaCollection を指定することで、コストのかかる負荷プロセスを回避できます。When validating using schemas, you can avoid the expensive load process by providing an XmlSchemaCollection using the Schemas property.