在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"
%>