欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-19 15:05:26
从数据库读出数据,然后以xml的格式显示数据,但是提示hd,category,subsort等没有关闭,可是我已经关闭了呀,不知道具体是什么原因造成了这个问题? vb co...
从数据库读出数据,然后以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>”
更容易观察.