在asp中使用dom创建新文档时,新文档不会进行自动缩进,虽从文档内容方面来讲新文档是格式良好或有效的,整个文档均在一行,用记事本或其它编辑工作打开新文件时,浏览文件很是不便,以下提供在asp中缩进XML的两个解决办法:
1.使用xsl进行缩进格式化:
xsl文件:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method = "xml" version="1.0" encoding="utf-8" omit-xml-declaration = "yes" indent = "yes" media-type="text/xml"/>
<xsl:template match="/ | @* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
----------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
asp:
<%
dim xmldoc,xsldoc,resultdoc
dim node,subnode
set xmldoc=server.CreateObject("MSXML2.DOMDocument")
xmldoc.async=false
xmldoc.loadXML("<?xml version='1.0' encoding='utf-8'?><root/>") '装载根节点
'----------------------创建节点*start----------------------
set node=xmldoc.createElement("user")
set subnode=xmldoc.createElement("name")
subnode.text="ssm1226"
node.appendChild subnode
set subnode=xmldoc.createElement("nickname")
subnode.text="雨中人"
node.appendChild subnode
set subnode=nothing
xmldoc.documentElement.appendChild node
set node=nothing
'----------------------创建节点*end----------------------
set xsldoc=server.CreateObject("MSXML2.DOMDocument")
xsldoc.async=false
xsldoc.load server.MapPath("transform.xsl")'装载转换xsl文件
set resultdoc=server.CreateObject("MSXML2.DOMDocument")
resultdoc.async=false
xmldoc.transformNodeToObject xsldoc,resultdoc '转换
set node=resultdoc.createProcessingInstruction("xml","version='1.0' encoding='utf-8'") '创加<?xml version='1.0' encoding='utf-8'?>声明
resultdoc.insertBefore node,resultdoc.firstChild'添加声明
set node=nothing
resultdoc.save server.MapPath("result.xml") '保存XML文件
%>
2.DOM中添加换行符
<%
dim xmldoc,node1,node2
set xmldoc=server.CreateObject("msxml2.domdocument")
xmldoc.async=false
xmlDoc.validateOnParse = false
if not xmldoc.loadXML("<root></root>") then
response.Write xmldoc.parseError.reason
response.End
end if
response.Write xmldoc.xml
response.End
set node1=xmldoc.createTextNode(vbcrlf)
set node2=xmldoc.createElement("name")
node2.text="ssm1226"
xmldoc.documentElement.appendChild node1.cloneNode(true)
xmldoc.documentElement.appendChild node2
xmldoc.documentElement.appendChild node1.cloneNode(true)
xmldoc.save "c:/test.xml"
%>