В Классическом ASP, читающем файлы CXML, нужно ли указывать ссылку dtd на локальные файлы?

К сожалению, мы унаследовали старый сайт Classic ASP и пишем новый код для сайта с раздачей туда и обратно. Читая в файле cXML, мы постоянно выкладываем ошибки во 2-й строке !DOCTYPE cXML SYSTEM "http://xml.../cXML.dtd, Если мы захватим местоположение dtd файл и измените его на локальный файл, т.е. file:///c:/....dtd оно работает. Нет ли способа заставить это работать, используя http место нахождения? Я бы предпочел не хранить все dtd Версии файлов локально.

Наш кодекс это:

    Dim olddtdvalue
    Dim newdtdvalue
    Dim xmlfilename
    olddtdvalue = "http://xml.cxml.org/schemas/cXML/"
    newdtdvalue = "file:///d:/Websites/FSIResponsive/cXML/"
    xmlfilename ="PORS_" & formatdatetime(now,vblongdate) & " " & replace(formatdatetime(now,vblongtime),":","_") &  ".xml"
    set fs=Server.CreateObject("Scripting.FileSystemObject") 
    set f=fs.CreateTextFile("d:\WebSites\FSIResponsive\cXML\InFiles\" & xmlfilename,true)
    f.write("remote host: " & request.ServerVariables("REMOTE_HOST") & vbcrlf & vbcrlf)
    totalBytes = Request.TotalBytes
    If totalBytes > 0 Then
        xml = Request.BinaryRead( totalBytes )
        for i = 1 to totalBytes
            xmlstr = xmlstr + String(1,AscB(MidB(xml, i, 1)))
        Next
        f.write(xmlstr)
        xml2 = xmlstr
        xml2 = Replace(xml2,olddtdvalue,newdtdvalue)
    End if
    Set xdoc = Server.CreateObject("Microsoft.XMLDOM")
'   Set xdoc = Server.CreateObject("MSXML2.DOMDocument.6.0")
    xdoc.ValidateOnParse = True
    xdoc.async = False
    xdoc.resolveExternals = True
'   response.write xml2 
    loadStatus = xdoc.loadXML(xml2)

Как видите, мы попробовали использовать MSXML2.DOMDocument.6.0, но это тоже не работает.

Спасибо алан

Обновление: вот код, который я наконец заработал:

Dim xmlfilename
Dim URL
totalBytes = Request.TotalBytes
If totalBytes > 0 Then
    xml = Request.BinaryRead( totalBytes )
    for i = 1 to totalBytes
        xmlstr = xmlstr + String(1,AscB(MidB(xml, i, 1)))
    Next
    xml2 = xmlstr
End if
Set xdoc = Server.CreateObject("MSXML2.DOMDocument.6.0")
xdoc.setProperty "ServerHTTPRequest", True
xdoc.setProperty "ProhibitDTD",False
xdoc.resolveExternals = True
xdoc.ValidateOnParse = True
xdoc.async =  False
loadStatus = xdoc.LoadXML(xml2)

Алан

0 ответов

Другие вопросы по тегам