XmlDocument.XmlResolver 属性

定义

设置 XmlResolver 以用于解析外部资源。

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

属性值

XmlResolver

要使用的 XmlResolver

在 .NET Framework 1.1 版中,调用方必须受到完全信任才能指定 XmlResolver

例外

此属性设置为 null,并且遇到了外部 DTD 或实体。

示例

以下示例加载包含对 DTD 文件的引用的 XML 文档。 该 XmlResolver 属性用于设置访问网络资源所需的凭据。

#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

本示例使用以下数据文件作为输入。

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

注解

XmlResolver可用于加载 DTD 或扩展实体引用。 使用此属性 XmlResolver.Credentials ,可以设置凭据 XmlResolver 以访问存储在安全网络资源上的资源。

  • 如果未使用 XmlReader (加载文档,则如果使用流、文件等加载文档, XmlResolver 则始终使用该文档 XmlDocument) 。

  • 如果文档已加载有一个 XmlTextReader,则使用该解析程序 XmlTextReader 解析 DocumentType 节点中的任何 DTD 引用。 解析程序 XmlDocument 用于扩展任何实体引用。

  • 如果文档已加载有一个 XmlValidatingReader,则永远不会使用该解析程序 XmlDocument

  • 如果文档加载了扩展的类XmlReader,并且XmlReader无法解析实体 (CanResolveEntity返回false) ,则XmlResolver``XmlDocument用于解析 DocumentType 节点中的任何引用并展开任何实体引用。

备注

XmlDocument如果使用已XmlResolver设置为它的XmlResolver集合加载XmlReader,则完成后不会缓存 XmlDocument Load onXmlReader

在 the.NET Framework 版本 1.1 中,如果未设置此属性,则应用程序的信任级别决定了默认行为。

Fully trusted code: 文档使用没有用户凭据的默认值 XmlUrlResolver 。 如果需要身份验证才能访问网络资源,请使用 XmlResolver 该属性指定 XmlResolver 必要的凭据。

Semi-trusted code: 属性 XmlResolver 设置为 null. 未解析外部资源。

有关安全性和 XmlResolver 属性的详细信息,请参阅 解析外部资源

此属性是文档对象模型 (DOM) 的 Microsoft 扩展。

适用于

另请参阅