Alert Module中有一些Web application的年代久远,只是简单维持,根本无法加减半分。只好另想他法
例如,名为HRIS的loutsNotes Application. 是一个基于LN 6.0的应用。
下图
节略后的html
<HTML>
<!-- Lotus-Domino (Release 5.0.8 - June 18, 2001 on Windows NT/Intel) -->
<HEAD>
<TITLE>HRIS Pending Approval Summary for myname</TITLE><style type="text/css"> A:link {font-family: Arial; font-size:8pt;color:blue;text-decoration:underline;} A:visited {font-family: Arial; font-size:8pt;color:blue;text-decoration:underline;} A:hover {font-family: Arial; font-size:8pt;color:red; text-decoration:underline;} </style>
</HEAD>
..................
<BODY TEXT="000000" BGCOLOR="FFFFFF">
<FORM>
..................
<INPUT NAME="Leave" TYPE=hidden VALUE="0">
<INPUT NAME="Claims" TYPE=hidden VALUE="0">
<INPUT NAME="Training" TYPE=hidden VALUE="0">
<INPUT NAME="ShortName" TYPE=hidden VALUE="myname">
<INPUT NAME="FullName" TYPE=hidden VALUE="Yi BAO/ITD/JTC">
<INPUT NAME="server" TYPE=hidden VALUE="DMNAPP1">
<INPUT NAME="LeaveDb" TYPE=hidden VALUE="HRES/SAPLeave.nsf">
<INPUT NAME="ClaimDb" TYPE=hidden VALUE="HRES/SAPClaim.nsf">
<INPUT NAME="TrainingDb" TYPE=hidden VALUE="HRES/SAPTraining.nsf">
<INPUT NAME="ApprMailInDb" TYPE=hidden VALUE="Mail/HRISApproval.nsf">
<INPUT NAME="PlatinumURL" TYPE=hidden VALUE="http://platinum.jtc.gov.sg/platinumweb/common/frame.asp?">
<INPUT NAME="ChangeDB" TYPE=hidden VALUE="ChangePass.nsf"></FORM>
</BODY>
</HTML>
直接在alert.aspx 中加入对HRIS的处理会破坏整个模块的结构,一旦HRIS升级又要修改。
因此单独用一个hris.aspx对HRIS的网页处理,当然也是XML+XSLT结构
以下是部分代码
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim url As String = Request("url")
Dim errstr As String = String.Empty
Dim buffer As String = ""
buffer = GetFilefromURL(url)
Dim bufferRegex As Regex = New Regex("</TABLE[^>]*>([\s\S]*?)</FORM>", RegexOptions.IgnoreCase)
Dim m As Match = bufferRegex.Match(buffer)
buffer = m.Groups(1).Value
buffer = Replace(buffer, "TYPE=hidden", "")
buffer = Replace(buffer, "type=hidden", "")
buffer = Replace(buffer, ">", "/>")
buffer = "<?xml version=""1.0"" encoding=""utf-8"" ?>" + vbCrLf + "<HRIS>" + vbCrLf + buffer + vbCrLf + "</HRIS>"
Response.Write(buffer)
Response.End()
End Sub
Function right(ByVal str As String, ByVal index As Integer) As String
Return Str.Substring(Str.Length - index)
End Function
Function left(ByVal str As String, ByVal index As Integer) As String
Return Str.Substring(1, index)
End Function
Function GetFilefromURL(ByVal url As String) As String
Dim buffer As String = ""
Try
Dim myrequest As System.Net.WebRequest = System.Net.WebRequest.Create(url)
Dim myCredential As System.Net.NetworkCredential = System.Net.CredentialCache.DefaultCredentials
Dim myproxy As New WebProxy()
myrequest.Proxy = myproxy
myrequest.Credentials = System.Net.CredentialCache.DefaultCredentials
myrequest.Timeout = 15000 ' 20 seconds
Dim myresponse As System.Net.WebResponse = myrequest.GetResponse
Dim myStream As Stream = myresponse.GetResponseStream()
Dim encode As System.Text.Encoding = System.Text.Encoding.GetEncoding("utf-8")
Dim Readstream As New System.IO.StreamReader(myStream, encode)
Dim read(256) As Char
Dim count As Integer = Readstream.Read(read, 0, 256)
buffer = count.ToString()
While count > 0
Dim str As New String(read, 0, count)
count = Readstream.Read(read, 0, 256)
buffer = buffer + str
End While
Readstream.Close()
myresponse.Close()
Catch ex As Exception
buffer = ex.ToString
End Try
Return buffer
End Function