2012-12-05 来源:网络
昨天一位站长朋友联系到小编,问小编能不能解决从数据库读出数据中出现的问题,小编看了之后,告诉原因并给朋友解决了问题,下面我们就一起来看看小编对于报错“无法显示XML页”如何解决的吧。具体内容如下:
在我们从数据库读取数据,并以XML格式显示的时候,电脑就有提示出hd,category,subsort等没有关闭,但是经过小编的检查已经关闭了,所以问题不出在这里,那我们就一起来找找吧,首先看看源代码。
<% response.ContentType= "text/xml" Response.CharSet = "GB2312" Response.Expires = 0 Response.write "<?xml version=""1.0"" encoding=""UTF-8"" ?>" Response.write vbcrlf&"<hd>" Response.write vbcrlf&vbTab&"<category>" Response.write vbcrlf&vbTab&vbTab&"<subsort>" ‘连接数据库的语句省略 do while not rs.eof response.write vbcrlf&vbTab&vbTab&vbTab&"<item>" response.write vbcrlf&vbTab&vbTab&vbTab&vbTab&"<id>"&rs("id")&"</id>" response.write vbcrlf&vbTab&vbTab&vbTab&"</item>" loop rs.close() set rs=nothing response.write vbcrlf&vbTab&vbTab&"</subsort>" response.write vbcrlf&vbTab&"</category>" response.write vbcrlf&"</hd>" Response.End() %>
看了一下代码,小编发现代码中含有很多【 <> " ' & 】特殊符号,而真正在XML格式文件中,不能含有这些特殊符号,需要进行XmlEncode编码,改了之后我们在看看代码:
Function XMLEncode(var) On Error Resume Next Dim strTmp If (IsNull(var)) Then var = "" End If If (VarType(var) = 11) Then If (var) Then strTmp = "1" Else strTmp = "0" End If Else strTmp = CStr(var) strTmp = Replace(strTmp, "&", "&") strTmp = Replace(strTmp, "<", "<") strTmp = Replace(strTmp, ">", ">") strTmp = Replace(strTmp, """", """) strTmp = Replace(strTmp, "'", "'") End If XMLEncode = strTmp End Function Function XMLDecode(str) Dim temp temp=replace(str,"&","&") temp=replace(temp,"<","<") temp=replace(temp,">",">") temp=replace(temp,""","""") temp=replace(temp,"'","'") XMLDecode = temp End Function Response.Write XmlEndode(rs("字段名字"))
除此之外,如果还有其他问题,我们还可以改动一下代码:
Response.write “<?xml version=”"1.0″” encoding=”"UTF-8″” ?>改成Response.write “<?xml version=”"1.0″” encoding=”"GB2312″” ?>
Response.Clear
Response.write “<?xml version=”"1.0″” encoding=”"GB2312″” ?>另外,写成Response.write vbCrlf & vbTab & vbTab & “<subsort>
将一些代码改成这样,更利于我们观察,同时也更好的显示出来。
以上就是关于报错“无法显示XML页”如何解决的办法,希望对大家有所帮助。