评论

收藏

[XML/XSL] 报错:XML页无法显示,下列标记没有被关闭解决方法

开发技术 开发技术 发布于:2021-06-28 18:39 | 阅读数:359 | 评论:0

从数据库读出数据,然后以XML的格式显示数据,但是提示hd,category,subsort等没有关闭,可是我已经关闭了呀,不知道具体是什么原因造成了这个问题?
VB code:
<% 
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() 
%>
因为输出的内容不能带<>”‘&这几个特殊字符,需要进行XmlEncode编码,如下的代码详情:
VBScript code:
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>”
更容易观察.
关注下面的标签,发现更多相似文章