XmlReaderSettings.ProhibitDtd Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Cuidado
Use XmlReaderSettings.DtdProcessing property instead.
Cuidado
XmlReaderSettings.ProhibitDtd has been deprecated. Use DtdProcessing instead.
Obtém ou define um valor que indica se o processamento de DTD (definição de tipo de documento) deve ser proibido. Esta propriedade está obsoleta. Use DtdProcessing em seu lugar.
public:
property bool ProhibitDtd { bool get(); void set(bool value); };
[System.Obsolete("Use XmlReaderSettings.DtdProcessing property instead.")]
public bool ProhibitDtd { get; set; }
[System.Obsolete("XmlReaderSettings.ProhibitDtd has been deprecated. Use DtdProcessing instead.")]
public bool ProhibitDtd { get; set; }
public bool ProhibitDtd { get; set; }
[<System.Obsolete("Use XmlReaderSettings.DtdProcessing property instead.")>]
member this.ProhibitDtd : bool with get, set
[<System.Obsolete("XmlReaderSettings.ProhibitDtd has been deprecated. Use DtdProcessing instead.")>]
member this.ProhibitDtd : bool with get, set
member this.ProhibitDtd : bool with get, set
Public Property ProhibitDtd As Boolean
Valor da propriedade
true
para proibir o processamento de DTD; caso contrário, false
. O padrão é true
.
- Atributos
Exemplos
O exemplo a seguir valida dados usando um DTD.
#using <System.Xml.dll>
using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;
using namespace System::IO;
// Display any validation errors.
static void ValidationCallBack( Object^ /*sender*/, ValidationEventArgs^ e )
{
Console::WriteLine( L"Validation Error: {0}", e->Message );
}
int main()
{
// Set the validation settings.
XmlReaderSettings^ settings = gcnew XmlReaderSettings;
settings->DtdProcessing = DtdProcessing::Parse;
settings->ValidationType = ValidationType::DTD;
settings->ValidationEventHandler += gcnew ValidationEventHandler( ValidationCallBack );
// Create the XmlReader object.
XmlReader^ reader = XmlReader::Create( L"itemDTD.xml", settings );
// Parse the file.
while ( reader->Read() )
;
return 1;
}
using System;
using System.Xml;
using System.Xml.Schema;
using System.IO;
public class Sample {
public static void Main() {
// Set the validation settings.
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;
settings.ValidationType = ValidationType.DTD;
settings.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);
// Create the XmlReader object.
XmlReader reader = XmlReader.Create("itemDTD.xml", settings);
// Parse the file.
while (reader.Read());
}
// Display any validation errors.
private static void ValidationCallBack(object sender, ValidationEventArgs e) {
Console.WriteLine("Validation Error: {0}", e.Message);
}
}
Imports System.Xml
Imports System.Xml.Schema
Imports System.IO
public class Sample
public shared sub Main()
' Set the validation settings.
Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.DtdProcessing = DtdProcessing.Parse
settings.ValidationType = ValidationType.DTD
AddHandler settings.ValidationEventHandler, AddressOf ValidationCallBack
' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("itemDTD.xml", settings)
' Parse the file.
while reader.Read()
end while
end sub
' Display any validation errors.
private shared sub ValidationCallBack(sender as object, e as ValidationEventArgs)
Console.WriteLine("Validation Error: {0}", e.Message)
end sub
end class
O exemplo usa o arquivo itemDTD.xml como entrada.
<!--XML file using a DTD-->
<!DOCTYPE store [
<!ELEMENT store (item)*>
<!ELEMENT item (name,dept,price)>
<!ATTLIST item type CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT price (#PCDATA)>]>
<store>
<item type="supplies" ISBN="2-3631-4">
<name>paint</name>
<price>16.95</price>
</item>
</store>
Comentários
Quando definido como true
, o XmlReader gera um XmlException quando qualquer conteúdo DTD é encontrado. Não habilite o processamento de DTD se você estiver preocupado sobre problemas de negação de serviço ou se você está tratando as fontes não confiáveis.
Se você tiver o processamento de DTD ativado, você pode usar XmlSecureResolver para restringir os recursos que XmlReader pode acessar. Você também pode criar seu aplicativo para que processar XML é memória e hora restritos. Por exemplo, configurar limites de tempo limite no seu aplicativo ASP.NET.
Esta propriedade está obsoleta. Use DtdProcessing em seu lugar. Se você tivesse definido ProhibitDtd como seu valor true
padrão definido DtdProcessing como Prohibit
. Se você tivesse definido ProhibitDtd como false
DtdProcessing Parse
.