手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp编程>列表

ADO数据与XML数据间的转换的类

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

' p_sXMLStr : XML格式的字符串
'*****************************************************
Private Sub SaveDataXML(ByRef p_sXMLStr)
Dim sFileInfo

If (Len(m_sSaveFileName) = 0) Then
m_sSaveFileName = GetRndFileName()
End If

If (Len(m_sSaveFilePath) = 0) Then
sFileInfo = m_sSaveFileName
Else
IF (Right(m_sSaveFilePath,1) = "/")Then
sFileInfo = m_sSaveFilePath & m_sSaveFileName
Else
sFileInfo = m_sSaveFilePath & "/" & m_sSaveFileName
End IF
End If

m_oXMLDOM.loadxml(p_sXMLStr)

ON ERROR RESUME NEXT

m_oXMLDOM.save ( Server.MapPath(sFileInfo) )
If Err.Number <>0 Then
m_nErrCode = m_nErrCode_Save
Exit Sub
End If

End Sub

'*****************************************************
' 过程: ResponseXML(ByRef p_sXMLStr)
' 描述: 输出XML格式的字符串到浏览器
' 参数:
' p_sXMLStr : XML格式的字符串
'*****************************************************
Private Sub ResponseXML(ByRef p_sXMLStr)
Response.CharSet = m_sEncoding
Response.ContentType = "text/xml"
Response.write p_sXMLStr
End Sub


'============================= 数据导出 End =============================



'============================= 数据导入 Begin =============================

'*****************************************************
' 过程: Import(ByRef p_oDbConn)
' 描述: 导入数据
' 参数:
' p_oDbConn: 数据库连接对象
'
'*****************************************************
Public Sub Import(ByRef p_oDbConn)
Dim oRootNode

If (Len(m_sXMLFile) < 1) Then
m_nErrCode = m_nErrCode_EnsFile
Exit Sub
End If

ON ERROR RESUME NEXT

Set m_oXMLDOM = Server.CreateObject("Microsoft.XMLDOM")

If Err.Number <>0 Then
m_nErrCode = m_nErrCode_XMLDOM
Exit Sub
End If

m_oXMLDOM.async = false

m_oXMLDOM.load( Server.MapPath(m_sXMLFile) )
If Err.Number <>0 Then
m_nErrCode = m_nErrCode_EnsFile
Exit Sub
End If

If (Len(m_oXMLDOM.xml) < 1) Then
m_nErrCode = m_nErrCode_ErrFile
Exit Sub
End If

Set oRootNode = m_oXMLDOM.documentElement
Set m_oXMLDOM = Nothing

m_sImportSQL = GetImportSQL(oRootNode)

Set oRootNode = Nothing

Call p_oDbConn.Execute(m_sImportSQL)
If Err.Number <>0 Then
m_nErrCode = m_nErrCode_WriteData
Exit Sub
End If

End Sub


'*****************************************************
' 函数: GetImportSQL(ByRef p_oDataBase)
' 描述: 获得将XML数据转换为SQL后的字符串
' 参数:
' p_oDataBase : XML文件的根节点
'
'*****************************************************
Private Function GetImportSQL(ByRef p_oDataBase)
Dim oTable, oRow, oDatas, oData
Dim sColNames, sColValues
Dim sColName
Dim sSQL


sSQL = ""

For Each oTable In p_oDataBase.childNodes

For Each oRow In oTable.childNodes

Set oDatas = oRow.selectNodes("@*")

sColNames = ""
sColValues = ""

For Each oData In oDatas

sColName = oData.nodeName

If ( Instr( Lcase(Cstr(m_sVacancyCols)), Lcase(Cstr("," & sColName & ",")) ) < 1) Then
sColNames = sColNames & sColName & ", "
sColValues = sColValues & "'" & oData.nodeValue & "', "
End If

Next

sColNames = "(" & Left(sColNames,Len(sColNames)-2) & ") "
sColValues = "(" & Left(sColValues,Len(sColValues)-2) & ") "

sSQL = sSQL & " Insert Into " & oTable.nodeName
sSQL = sSQL & " " & sColNames & " Values " & sColValues & " ; "

Next

Next

Set oData = Nothing
Set oDatas = Nothing
Set oRow = Nothing
Set oTable = Nothing

GetImportSQL = sSQL
End Function

'============================= 数据导入 End =============================


'*****************************************************
' 函数: GetErrExegesis(ByRef p_nErrCode)
' 描述: 获得错误代码的注释
' 参数:
' p_oDataBase : XML文件的根节点
'
'*****************************************************
Public Function GetErrExegesis(ByRef p_nErrCode)
Dim sExegesis
Dim nErrCode

nErrCode = Cint(p_nErrCode)

Select Case (nErrCode)

Case m_nErrCode_NotErr
sXSLStr = "运行成功!"

Case m_nErrCode_NotArray
sXSLStr = "属性: SQL语句数组 不正确!"

Case m_nErrCode_XMLDOM
sXSLStr = "不能创建XML文档,服务器必须支持MSXML!"

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!