XmlReaderSettings.ProhibitDtd Property

Note: This property is new in the .NET Framework version 2.0.

Gets or sets a value indicating whether to prohibit document type definition (DTD) processing.

Namespace: System.Xml
Assembly: System.Xml (in system.xml.dll)

public bool ProhibitDtd { get; set; }
/** @property */
public boolean get_ProhibitDtd ()

/** @property */
public void set_ProhibitDtd (boolean value)

public function get ProhibitDtd () : boolean

public function set ProhibitDtd (value : boolean)

Property Value

true to prohibit DTD processing; otherwise false. The default is true.

When set to true, the XmlReader throws an XmlException when any DTD content is encountered. Do not enable DTD processing if you are concerned about Denial of Service issues or if you are dealing with untrusted sources.

If you have DTD processing enabled, you can use the XmlSecureResolver to restrict the resources that the XmlReader can access. You can also design your application so that the XML processing is memory and time constrained. For example, configure time-out limits in your ASP.NET application.

The following example validates data using a DTD.

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.ProhibitDtd = false;
    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);

The example uses the itemDTD.xml file as input.

<!--XML file using a DTD-->
<!DOCTYPE store [
  <!ELEMENT store (item)*> 
  <!ELEMENT item (name,dept,price)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT price (#PCDATA)>]>
  <item type="supplies"  ISBN="2-3631-4">

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0