如何把sql数据库中的表中的数据写入到xml文件里

qieyj 2003-01-19 06:39:03
如题
...全文
158 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2003-01-22
  • 打赏
  • 举报
回复
http://www.csdn.net/Develop/read_article.asp?id=13753
ssm1226 2003-01-22
  • 打赏
  • 举报
回复
另外你也可以读出记录集,在asp中构造XML
ssm1226 2003-01-22
  • 打赏
  • 举报
回复
方法二:
<%
dim strConn,conn,cmd,xmldoc
dim strSql,strQuery,stm
strTableName="test1"

strConn="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=test;Data Source=SHISM;password="
set conn=server.CreateObject("adodb.connection")
conn.CursorLocation = 3
conn.Open strConn




function getXml(strQuery,conn)
dim xmldoc,cmd,stm
set cmd=server.CreateObject("adodb.command")
cmd.ActiveConnection=conn

strQuery="<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'><sql:query>" & strQuery & "</sql:query></ROOT>"


set stm=server.CreateObject("adodb.stream")
stm.Open
stm.WriteText strQuery,0
stm.Position=0

cmd.CommandStream=stm
cmd.Dialect = "{5D531CB2-E6Ed-11D2-B252-00C04F681B71}"

set xmldoc=server.CreateObject("msxml2.domdocument")
cmd.Properties("Output Stream") = xmldoc
cmd.Execute ,,1024
getXml=xmldoc.xml
set cmd=nothing
set xmldoc=nothing
set stm=nothing
end function


strQuery="select * from test1 for xml auto"
Response.Write getXml(strQuery,conn)
%>
ssm1226 2003-01-22
  • 打赏
  • 举报
回复
1.asp
<%
dim strConn,conn,rs,xmldoc,xsldoc
dim strSql
strTableName="test1"

strConn="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=test;Data Source=SHISM;password="
set conn=server.CreateObject("adodb.connection")
conn.Open strConn

strSql="select * from test1"
set rs=server.CreateObject("adodb.recordset")
rs.Open strSql,conn,1,1
set xmldoc=server.CreateObject("msxml2.domdocument")
xmldoc.async=false
rs.Save xmldoc,1
set xsldoc=server.CreateObject("msxml2.domdocument")
xsldoc.async=false
xsldoc.load server.MapPath("toXml.xsl")

Response.Write xmldoc.transformNode(xsldoc)
set xsldoc=nothing
set xmldoc=nothing
rs.close
set rs=nothing
set cmd=nothing
%>
toXML.xsl
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema"
>
<xsl:output omit-xml-declaration="yes" method="xml"/>
<xsl:template match="/">
<xsl:element name="ROOT">
<xsl:apply-templates />
</xsl:element>
</xsl:template>
<xsl:template match="/xml/rs:data/z:row">
<xsl:element name="element">
<xsl:for-each select="@*">
<xsl:attribute name="{name()}">
<xsl:value-of select="." />
</xsl:attribute>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
laimon 2003-01-22
  • 打赏
  • 举报
回复
最简单的方法就是:
获得记录集,例如adoRecordset
adoRecordset.Save 文件路径和文件名, adPersistXML

就会保存在文件中。
allforly 2003-01-22
  • 打赏
  • 举报
回复
解决了没有?
<script language="jscript" runat="server">
var conn = new ActiveXObject("adodb.connection")
conn.open("Provider=Microsoft.jet.oledb.4.0;data source="+Server.MapPath("db.mdb"))
var sql = "select distinct province from allcity"
var rs = conn.Execute(sql)
var xmldoc = new ActiveXObject("Microsoft.XMLDOM")
xmldoc.async = false
var xmlhead = xmldoc.createProcessingInstruction('xml','version="1.0" encoding="GB2312"')
xmldoc.insertBefore(xmlhead,xmldoc.childNodes(0))
var root = xmldoc.createElement("root")
xmldoc.appendChild(root)
do{
var province = xmldoc.createElement("province")
province.text = rs("province")
root.appendChild(province)
var osql = "select distinct city from allcity where province='"+rs("province")+"'"
var ors = conn.Execute(osql)
do{
var city = xmldoc.createElement("city")
city.text = ors("city")
province.appendChild(city)
var mysql = "select college from allcity where city='"+ors("city")+"'"
var myrs = conn.Execute(mysql)
do{
var college = xmldoc.createElement("college")
college.text = myrs("college")
city.appendChild(college)
myrs.movenext()
}while(!(myrs.eof||myrs.bof))
myrs.Close()
ors.movenext()
}while(!(ors.eof||ors.bof))
ors.Close()
rs.movenext()
}while(!(rs.eof||rs.bof))
xmldoc.save(Server.MapPath("allcity.xml"))
Response.Write("创建成功!")
</script>
qieyj 2003-01-21
  • 打赏
  • 举报
回复
数据库里有3个字段:provience(省份),city(城市),college(乡镇),我得想法是一级一级生成xml文件,也就是说省份作为一个根节点,同一省份下的城市是另一个节点,同一城市下的乡镇是最下面的节点,比如:
<provience>山西
<city>太原
<college>郓城
</college>
<college>朔州
</college>
</city>太原
</provience>
online 2003-01-20
  • 打赏
  • 举报
回复
ADORecordset 有这个方法
qieyj 2003-01-20
  • 打赏
  • 举报
回复
有没有直接可以用一个工具就实现的啊
allforly 2003-01-19
  • 打赏
  • 举报
回复
<%
class autoXML
Private xmldoc
Private xmlfile

Sub Class_Initialize()
set xmldoc = Server.CreateObject("Microsoft.XMLDOM")
xmldoc.async = fasle
End Sub

Sub Class_Terminate()
set xmldoc = Nothing
End Sub

Public Property Let filePath(str)
xmlfile = str
End Property

Sub getRs(rs)
dim xmlhead
dim pNode,sNode
dim aNode,tNode
dim tableName
dim rf
dim i
set xmlhead = xmldoc.createProcessingInstruction("xml","version=""1.0"" encoding=""GB2312""")
xmldoc.insertBefore xmlhead,xmldoc.childNodes(0)
tableName = split(rs.Source,chr(32))
set pNode = xmldoc.CreateElement(tableName(3))
xmldoc.appendChild pNode
redim aNode(rs.Fields.Count-1)
do while not rs.eof
set sNode = xmldoc.CreateElement(tableName(3)&"list")
pNode.appendChild sNode
for i=0 to rs.Fields.Count-1
if rs.Fields(i).Name=tableName(3) then
tNode = rs.Fields(i).Name&"Child"
else
tNode = rs.Fields(i).Name
end if
set aNode(i) = xmldoc.CreateElement(tNode)
sNode.appendChild aNode(i)
if rs.Fields(i).value<>"" then
aNode(i).text = rs.Fields(i).value
end if
next
rs.movenext
loop
End Sub

Function saveFile()
on error resume next
xmldoc.save xmlfile
saveFile = (err.number=0)
End Function
End Class
%>
调用,把调用recordset就可以了。
<%
dim conn
set conn = Server.CreateObject("adodb.connection")
conn.open "Provider=Microsoft.jet.oledb.4.0;data source="&Server.MapPath("db.mdb")
dim rs,sql
set rs = Server.CreateObject("adodb.recordset")
sql = "select * from news"
rs.Open sql,conn,3,2

dim ixml
dim xf
set ixml = new autoXML
xf = "test.xml"
ixml.filePath = Server.MapPath(xf)
ixml.getRs(rs)
if ixml.saveFile() then
response.write "<a href=""" & Server.URLEncode(xf) & """>保存完毕</a>"
else
response.write "保存文件错误"
end if
set ixml = Nothing
rs.close
set rs = Nothing
%>
_TMG_ 2003-01-19
  • 打赏
  • 举报
回复
ADORecordset 有这个方法, 看看 MSDN
qieyj 2003-01-19
  • 打赏
  • 举报
回复
不是很清楚
quady 2003-01-19
  • 打赏
  • 举报
回复
http://www.aspcool.com/lanmu/browse1.asp?ID=653&bbsuser=asp
看看这个,比较简单的。
或者,上www.google.com查asp、xml
qieyj 2003-01-19
  • 打赏
  • 举报
回复
没有人知道吗

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧