MSXML 處理 xml 文檔時外部DTD定義的問題(ASP)
項目中碰到這個問題,所以也貼了出來
xmlfile = "http://myserver/catalog.xml"
xslfile = "catalog.xsl"
' 創建相關對象
Set xslDoc = server.CreateObject("MSXML2.FreeThreadedDOMDocument")
Set xmlDoc = server.CreateObject("MSXML2.DOMDocument")
' 讀取xsl文件
xsldoc.async = False
xsldoc.resolveExternals = True
xsldoc.load server.MapPath(xslfile)
' 讀取xml文件
xmldoc.setProperty "ServerHTTPRequest",True ' 設置ServerHTTPRequest 屬性為 True 為了通過http協議載入xml文檔
xmldoc.async = False ' 設置 async屬性為 False 關閉異步調用
xmldoc.resolveExternals = True ' 設置 resolveExternals 為 True 打開外部DTD分析
xmldoc.validateOnParse = False ' 設置 validateOnParse 為 False 允許文檔驗證
xmldoc.load xmlfile ' 讀取xml文檔
Do While (xmldoc.ReadyState < 4) ' 檢查ReadyState狀態值是否為4 ' 具體數值定義參見msxml sdk document
xmldoc.waitForResponse 10 ' 通過waitForResponse方法等待文檔完全讀取完畢 ' 如果為讀取完成,系統暫停10毫秒
Loop
' 轉換xml -> html 并輸出文檔
xmldoc.transformNodeToObject xsldoc,Response
' 清空對象
Set xslt = Nothing
Set xsldoc = Nothing
Set xmldoc = Nothing