解析从旧版ASP应用程序生成的HTML以创建ASP.NET 2.0页面

时间:2009-02-19 13:19:03

标签: c# .net python html

我的一位朋友正致力于从传统的asp应用程序生成的html页面中创建一个很好的解决方案来生成aspx页面。

想法是运行遗留应用程序,捕获html输出,使用某些工具(比如说HtmlTidy)清理html并解析它/将其转换为aspx,(使用Xslt或自定义工具)以便现有的html元素,div ,图像,样式等整齐地转换为aspx页面(太多;))。

任何现有的工具/脚本/实用程序都可以这样做吗?

3 个答案:

答案 0 :(得分:2)

这是你做的。

  1. 定义遗留应用程序应该执行的操作。记下获取页面,发布表单,导航等方案

  2. 为各种场景编写类似单元测试的脚本。

  3. 使用Python HTTP client library在各种脚本中练习遗留应用。

  4. 如果你的脚本有效,你(a)实际上了解遗留应用程序,(b)可以使它做它应该做的各种事情,(c)你可以可靠地捕获HTML响应页面。 / p>

  5. 更新脚本以捕获HTML响应。

  6. 你有页面。现在,您可以考虑ASPX页面所需的内容。

    • 手动编辑HTML以使其成为ASPX。

    • 使用Beautiful Soup编写一些内容,将HTML按摩为适合ASPX的格式。这可能是使用<asp:...标记替换文字或标记。

    • 从HTML中创建一些其他更有用的数据结构 - 反映页面结构和含义的数据结构,而不仅仅是HTML标记。从更有用的结构生成ASPX页面。

答案 1 :(得分:0)

刚刚发现HTML敏捷包足够有用,因为他们比python更了解C#。

答案 2 :(得分:0)

我知道这是一个老问题,但在类似情况下(需要在.NET框架中显示的50k +旧版ASP页面),我做了以下内容。

  1. 创建了一个重写引擎(HttpModule),它可以捕获所有传入的请求并查找来自旧站点的任何内容。

  2. (在一个单独的类中 - 保持组织有序!)使用WebClient或HttpRequest等打开与旧服务器的连接并下载呈现的HTML。

  3. 使用HTML敏捷工具包(非常光滑)来提取我感兴趣的内容 - 在我们的例子中,如果div为“bdy”类,则总是在里面

  4. 将此内容放入缓存中 - 此示例中为SQL表。

  5. 每次点击都会检查缓存,并且a)检索页面并构建缓存条目,或者b)从缓存中获取页面。

    1. 专为显示遗留内容而构建的aspx页面接收重写请求,并在asp文本控件内显示遗留页面中的相关内容。
    2. 缓存是为了提高性能 - 因为给定页面的第一个请求至少有两个命中 - 一个从浏览器到新服务器,一个从新服务器到旧服务器 - 我将可缓存数据存储在新服务器,以便后续请求不必返回旧服务器。我们还缓存图像,CSS,脚本等。

      当您必须处理表单,cookie等时,它会变得混乱,但这些都可以存储在您的缓存中,并在必要时通过每个请求传递到旧服务器。我还存储内容过期日期和我从旧服务器返回的其他标头,并确保在呈现缓存页面时将这些标头传递回浏览器。请记住尽可能采用与内容无关的方法。您正在有效地构建一个页内Web代理,它允许IIS以其想要的方式呈现旧ASP,并操纵输出。

      效果很好 - 我在ASP.NET应用程序中无缝地运行所有旧页面。如果我们不得不触及每个传统的asp页面,这为我们节省了一整年的开发时间。

      祝你好运!