XmlValidatingReader.XmlResolver Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Задает XmlResolver для разрешения внешних DTD и ссылок на расположение схем. Кроме того, XmlResolver
используется для обработки любых импортированных или добавленных элементов, найденных в 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
Значение свойства
Используемый XmlResolver
. Если он имеет значение null
, внешние ресурсы не разрешаются.
В версии 1.1 платформа .NET Framework вызывающий объект должен быть полностью доверен, чтобы указать .XmlResolver
Примеры
В следующем примере свойство используется XmlResolver
для указания учетных данных, необходимых для доступа к сетевому 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
В этом примере в качестве входных данных используются следующие файлы.
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">
Комментарии
Примечание
Класс XmlValidatingReader устарел в платформа .NET Framework 2.0. Проверяющий XmlReader экземпляр можно создать с помощью XmlReaderSettings класса и Create метода. Дополнительные сведения см. в подразделе "Примечания" на справочной странице XmlReader.
Используется XmlResolver
для загрузки всех DTD, сущностей или схем, необходимых для завершения процесса проверки.
Это свойство может быть задано в любое время и принимает влияние после следующего Read вызова. Если этому свойству null
присвоено значение, средство чтения предполагает, что пользователь не заинтересован в разрешении внешних ссылок. В этом случае средство чтения проверяет только внутренние ресурсы, если ресурс присутствует.
В версии 1.1 платформа .NET Framework, если это свойство не задано, уровень доверия приложения определяет поведение по умолчанию.
Fully trusted code:
Средство чтения использует значение по умолчанию XmlUrlResolver без учетных данных пользователя. Если для доступа к сетевому ресурсу требуется проверка подлинности, используйте XmlResolver
свойство, чтобы указать XmlResolver
необходимые учетные данные.
Semi-trusted code:
Для XmlResolver
свойства задано null
значение . Внешние ресурсы не разрешаются.
При проверке с помощью схем можно избежать дорогостоящего процесса загрузки, предоставив XmlSchemaCollection свойство.Schemas