2009-12-21 67 views
1

這一直困擾着我幾天。我試圖從上傳的文件中加載XML到到XmlDocument對象,並得到如下黃色屏幕的死亡:在C中針對DTD驗證XML的問題#

這裏是我的代碼。你可以清楚地看到我將ProhibitDtd設置爲false。

public static XmlDocument LoadXml(FileUpload fu) 
{ 
    var settings = new XmlReaderSettings 
         { 
          ProhibitDtd = false, 
          ValidationType = ValidationType.DTD 
         }; 
    var sDtdPath = string.Format(@"{0}", HttpContext.Current.Server.MapPath("/includes/dtds/2.3/archivearticle.dtd")); 
    settings.Schemas.Add(null, sDtdPath); 

    var r = XmlReader.Create(new StreamReader(fu.PostedFile.InputStream), settings); 
    var document = new XmlDocument(); 
    document.Load(r); 
    return document; 
} 

回答

2

添加XmlResolver=null您​​。這將防止xmlDocument嘗試訪問DTD。如果您需要驗證,請在單獨的操作中執行此操作。