首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取ASP-Classic文件,但以文本格式逐行显示结果,而不是首先呈现结果。

读取ASP-Classic文件,但以文本格式逐行显示结果,而不是首先呈现结果。
EN

Stack Overflow用户
提问于 2022-01-31 20:33:02
回答 1查看 407关注 0票数 1

我的问题是读取ASP文件,而不是在ASP或HTML中呈现它们。当结果显示到屏幕上时,我需要它们是文本格式的。我的意思是,所有的HTML标记,如<html><script>,都是呈现而不是显示的。因此,它不会将单词<style>打印到屏幕上,而是执行命令,如果可能的话,这与我希望发生的情况正好相反。

更复杂的是,在解决了这个问题之后,我遇到了以前遇到的一个问题,对于ASP块的<%和%>标记,很难做同样的事情,这显然只是在需要它来显示结果时运行块。

总结-我试图从asp文件中获取纯文本,就好像它只是一个文本文件,而不是执行ASP经典段。然后,我需要在替换或regex系统中运行每一行,然后使用我自己的CSS标记将呈现放回原处,考虑一个自制IDE类型系统,当我指定要触发的特定显示元素时,它会标记这些行。我想为CSS样式设置自定义标签,所以当我显示每一行时,我会用颜色和样式标记它们,这样在屏幕上视觉上就更有意义了,例如,在屏幕上读取这一行时,会使屏幕上出现深蓝色。我希望这是有意义的,我会提供任何代码,你想看。

编辑-摘要只是给您提供范围,主要问题是如何在不执行html或asp经典代码的情况下将文本流作为文本在屏幕上显示。也许,将一些javascript与之混合起来可能是一种好方法吗?我只是觉得可能有一种纯粹的ASP经典的方式来做这个,它可以如何处理读取文件等。

代码语言:javascript
复制
IF VALIDATED_PAGE <> "" THEN                                                                    

set fs=Server.CreateObject("Scripting.FileSystemObject")                                            'Create a File Object to access files
set fso = Server.CreateObject("Scripting.FilesystemObject")                                         'Create a File Object to access files
fs.CopyFile ASP_FILE_LOCATION,EDT_FILE_FORMAT_LOCATION
'Copy the ASP file we want to edit into a .EDT extension
set txt = fso.OpenTextFile(EDT_FILE_FORMAT_LOCATION)                                            'Set the Text from  to use this EDIT File 
LINECOUNT = 0                                                                                       'Set this to ZERO to do manual line number tracking must start at zero

do while txt.AtEndOfStream = false                                                                  'Do these thing while the text file is NOT End Of Stream (END)
    LINECOUNT = LINECOUNT + 1                                                                       'Increase the Line Count number as we go through the file
    Response.Write("<LABEL class='LINENUMBER'>LINE#" & LINECOUNT & "</label>")                      'Mark and display the line numbers  

    IF NOT txt.AtEndOfStream THEN 
        IF InStr(txt.Readline,"div_a1") >= 1 then 
            response.write "A1FOUND"
            NEWLINE = Replace(txt.Readline,"div_a1",("<label style='color:blue;'>" & txt.Readline & "</label>"))
            RESPONSE.WRITE NEWLINE
            DIV_A1 = 1
        END IF
    END IF
    

    IF NOT txt.AtEndOfStream = TRUE THEN Response.Write(txt.ReadLine & "<br>")                                                      'Write the current line to the screen
         
LOOP 
END IF

  1. LINE#1
  2. LINE#2
  3. LINE#3
  4. LINE#4
  5. LINE#5
  6. LINE#6 div.css_grid{
  7. LINE#7文本-阴影:2PX2PX black;
  8. LINE#8 margin:0px;
  9. LINE#9}

看看前几行是如何不显示任何信息的,因为它们是html头代码和第5行的标记,但是在运行<style>命令之后,第6行会在后面显示文本,直到它到达</style>的第10行为止。也许这能让你更明白我在说什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-02 08:48:54

每当您需要在web浏览器中以文本形式显示HTML时,您需要首先对其进行HTML编码,否则web浏览器将解释和呈现HTML标记,而不是简单地以纯文本形式显示它们。

您可以使用以下方法在经典ASP中执行此操作

代码语言:javascript
复制
<%
Call Response.Write(Server.HTMLEncode(content))
%>

在任何返回文件内容的Response.Write方法调用中,都需要使用Response.Write

有用的链接

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70932473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档