Ver Mensaje Individual
  #3 (permalink)  
Antiguo 23/12/2008, 06:01
Avatar de Muzztein
Muzztein
 
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: Pasar un valor a Xml

Creo que esta funcion la publique ya en "la biblioteca" pero te la anexo igualmente aca.

Es una funcion muy util que lo que hace es tomar una consulta SQL, ejecutarla contra el servidor y el resultado lo transforma en un XML.

el unico requisito de esta funcion es que asume una coneccion llamada CONEXION


se ejecuta asi

Código PHP:
dim xml ,str

str 
"select * from tabla"
xml setQueryToXml(str
y listo, en la variable xml estan tus datitos.


Código PHP:
Function setQueryToXml(strSQL)
    


    Dim strXMLTemplate
    Dim xCount
    Dim strXml
    DIM dbcRec
    DIM XMLOBJ
    DIM XMLTEMPLATE
    DIM XMLRESULT
                on error resume next
                
                Const adCmdText = &H0001 ' ADDED PARA PODER CONTAR
                Const adOpenStatic = 3   ' ADDED PARA PODER CONTAR


                Set dbcRec = Server.CreateObject("ADODB.RecordSet")
                dbcRec.Open strSQL,ConEXION,adopenstatic,adcmdtext  ' ADDED PARA PODER CONTAR
                
                If Err.Number <> 0 OR dbcRec.RecordCount <= 0 Then
                setQueryToXml = FALSE
                Else
                    Set xmlObj = Server.CreateObject("MSXML2.DOMDocument")
                    Set XmlTemplate =  Server.CreateObject("MSXML2.DOMDocument")
                    strXMLTemplate = "<?xml version=""1.0""?>"
                    strXMLTemplate = strXMLTemplate & "<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" xmlns:z=""#RowsetSchema"" xmlns:rs=""urn:schemas-microsoft-com:rowset"">"  & vbCrLf
                    strXMLTemplate = strXMLTemplate & "<xsl:output method=""xml"" cdata-section-elements=""id_objeto"" indent=""yes"" omit-xml-declaration=""yes""/>"  & vbCrLf
                    strXMLTemplate = strXMLTemplate & "<xsl:template match=""/"">"  & vbCrLf
                    strXMLTemplate = strXMLTemplate & "<xsl:element name=""cryptic_writings"">"  & vbCrLf
                    strXMLTemplate = strXMLTemplate & "<xsl:for-each select=""/xml/rs:data/z:row"">"  & vbCrLf
                    strXMLTemplate = strXMLTemplate & "<xsl:element name=""reg"">"  & vbCrLf
                    For xCount = 0 To dbcRec.Fields.Count - 1
                    strXMLTemplate = strXMLTemplate & "<xsl:element name=""" & lcase(dbcRec(xCount).Name) & """>" & vbCrLf
                    strXMLTemplate = strXMLTemplate & "<xsl:value-of select=""@" & dbcRec(xCount).Name & """/>" & vbCrLf
                    strXMLTemplate = strXMLTemplate & "</xsl:element>" & vbCrLf
                    Next
                    strXMLTemplate = strXMLTemplate & "</xsl:element>"  & vbCrLf
                    strXMLTemplate = strXMLTemplate & "</xsl:for-each>"  & vbCrLf
                    strXMLTemplate = strXMLTemplate & "</xsl:element>"  & vbCrLf
                    strXMLTemplate = strXMLTemplate & "</xsl:template>"  & vbCrLf
                    strXMLTemplate = strXMLTemplate & "</xsl:stylesheet>"  & vbCrLf
                    XmlTemplate.loadXML (strXMLTemplate)
                    dbcRec.Save xmlObj, 1
                    strXml = xmlObj.transformNode(XmlTemplate)
                    Set XmlTemplate = Nothing
                    Set xmlObj = Nothing
                    dbcRec.Close
                    Set dbcRec = Nothing
                    setQueryToXml = strXMLTemplate
                    setQueryToXml = strXml
                End If
                on error goto 0
End Function