Tema: ordenar xml
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/01/2014, 03:02
maialenlopez
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años, 1 mes
Puntos: 7
Respuesta: ordenar xml

Y esta es la función que me genera el xml:
Código vb:
Ver original
  1. Public Sub TratarAsset(oXMLDocFSGS, oRaiz, accion, Descript, Codigo, importe, CodGeneral)
  2.     Dim oFos As FileSystemObject
  3.     Dim oFosGes As FileSystemObject
  4.     Dim Carpeta As Folder
  5.     Dim CarpetaUnidadesGestion As Folder
  6.     Dim Archivo As File
  7.     Dim ArchivoUniGestion As File
  8.     Dim ostream As Scripting.TextStream
  9.     Dim ostreamUniGestion As Scripting.TextStream
  10.     Dim Carpetabackup As String
  11.     Dim saux As String
  12.     Dim sauxUniGestion As String
  13.     Dim sNombreFichero As String, sFicheroLeer As String, sNombreFicheroGestion As String
  14.     Dim sIdFich As String
  15.     Dim iIdSecuencial As Double
  16.     Dim sFicheroEscribir As String
  17.    
  18.     Dim bHayCambios As Boolean, bHayUnCambio As Boolean
  19.     'Dim oXMLDocFSGS As MSXML2.DOMDocument60
  20.    Dim oNodoLinea, oNombre, oValor, oNodoUons, oNodoUon, oNodoImps, oNodoImp As MSXML2.IXMLDOMNode
  21.     Dim i As Long
  22.     'Variables para recoger los datos de unidades de gestion
  23.    Dim sCodUnidadGes, sExpedienteGestor, sDescrUnidadGes, sCodArea, sCodZona As String
  24.     Dim unidadGestionEncontrada As Boolean
  25.    
  26.     Dim oIdi As CIdioma
  27.     Dim oIdiomas As CIdiomas
  28.    
  29.     Dim sDescrCorta As String
  30.        
  31.     On Error GoTo error:
  32.    
  33. '    '<PARTIDAS>
  34. '    Set oXMLDocFSGS = New MSXML2.DOMDocument60
  35. '
  36. '    Set oRaiz = oXMLDocFSGS.createNode(NODE_ELEMENT, "PARTIDAS", "")
  37. '    oXMLDocFSGS.appendChild oRaiz
  38.  
  39.     '<PARTIDA>
  40.    Set oNodoLinea = oXMLDocFSGS.createNode(NODE_ELEMENT, "PARTIDA", "")
  41.     oRaiz.appendChild oNodoLinea
  42.        
  43.     '<ACCION> Acción que afecta a los datos CHAR(1)</ACCION>
  44.    Set oNombre = oXMLDocFSGS.createNode(NODE_ELEMENT, "ACCION", "")
  45.     oNodoLinea.appendChild oNombre
  46.     Set oValor = oXMLDocFSGS.createNode(NODE_TEXT, "", "")
  47.     oValor.nodeValue = accion
  48.     oNombre.appendChild oValor
  49.     '<PRES0> Identificador del nodo raiz VARCHAR(20)</PRES0>
  50.    Set oNombre = oXMLDocFSGS.createNode(NODE_ELEMENT, "PRES0", "")
  51.     oNodoLinea.appendChild oNombre
  52.     Set oValor = oXMLDocFSGS.createNode(NODE_TEXT, "", "")
  53.     oValor.nodeValue = sPres0
  54.     oNombre.appendChild oValor
  55.     '<PRES1>Identificador del nivel 1 VARCHAR(20)</PRES1>
  56.    Set oNombre = oXMLDocFSGS.createNode(NODE_ELEMENT, "PRES1", "")
  57.     oNodoLinea.appendChild oNombre
  58.     Set oValor = oXMLDocFSGS.createNode(NODE_TEXT, "", "")
  59.     oValor.nodeValue = CodGeneral
  60.     oNombre.appendChild oValor
  61.    
  62.     If Codigo <> CodGeneral Then
  63.         '<PRES2>Identificador del nivel 2 VARCHAR(20)</PRES2>
  64.        Set oNombre = oXMLDocFSGS.createNode(NODE_ELEMENT, "PRES2", "")
  65.         oNodoLinea.appendChild oNombre
  66.         Set oValor = oXMLDocFSGS.createNode(NODE_TEXT, "", "")
  67.         oValor.nodeValue = Codigo
  68.         oNombre.appendChild oValor
  69.     End If
  70.      
  71.     '<USU>Código usuario VARCHAR(20)</USU>
  72.    Set oNombre = oXMLDocFSGS.createNode(NODE_ELEMENT, "USU", "")
  73.     oNodoLinea.appendChild oNombre
  74.     Set oValor = oXMLDocFSGS.createNode(NODE_TEXT, "", "")
  75.     oValor.nodeValue = "Integration"
  76.     oNombre.appendChild oValor
  77.    
  78.     '<FECACT>Fecha actualización (mm-dd-yyyy hh:mm:ss)</FECACT>
  79.    Set oNombre = oXMLDocFSGS.createNode(NODE_ELEMENT, "FECACT", "")
  80.     oNodoLinea.appendChild oNombre
  81.     Set oValor = oXMLDocFSGS.createNode(NODE_TEXT, "", "")
  82.     oValor.nodeValue = Format(Now, "mm-dd-yyyy hh:mm:ss")
  83.     oNombre.appendChild oValor
  84.                  
  85.     '''pres5_idiomas
  86.    If Descript = "code" Then
  87.         sDescrCorta = Codigo
  88.     Else
  89.         sDescrCorta = Descript
  90.     End If
  91.      
  92.     If Not IsNull(sDescrCorta) Then
  93.    
  94.         'Carga todos los idiomas de la aplicación:
  95.        Set oIdiomas = DevolverIdiomas(m_oConexion, False, True)
  96.        
  97.             For Each oIdi In oIdiomas
  98.                 '<DEN_XXX> Denominación del nivel en el idioma correspondiente VARCHAR(200)</DEN_XXX>
  99.                Set oNombre = oXMLDocFSGS.createNode(NODE_ELEMENT, "DEN_" & UCase(oIdi.Cod), "")
  100.                 oNodoLinea.appendChild oNombre
  101.                 Set oValor = oXMLDocFSGS.createNode(NODE_TEXT, "", "")
  102.                 oValor.nodeValue = sDescrCorta
  103.                 oNombre.appendChild oValor
  104.             Next
  105.        
  106.             Set oIdi = Nothing
  107.             Set oIdiomas = Nothing
  108.     End If
  109.    
  110.     ''pres5_importes
  111.     'SI NO ES NI I ni U tengo que hacer esto?
  112.     If Not IsNull(FecINI) And Not IsNull(FecFIN) Then
  113.          '<IMPORTES>
  114.         Set oNodoImps = oXMLDocFSGS.createNode(NODE_ELEMENT, "IMPORTES", "")
  115.          oNodoLinea.appendChild oNodoImps
  116.          '    <IMPORTE>
  117.         Set oNodoImp = oXMLDocFSGS.createNode(NODE_ELEMENT, "IMPORTE", "")
  118.          oNodoImps.appendChild oNodoImp
  119.          '        <ACCION_IMPORTE>Acción que afecta a las vigencias e importes CHAR(1)</ACCION_IMPORTE>
  120.         Set oNombre = oXMLDocFSGS.createNode(NODE_ELEMENT, "ACCION_IMPORTE", "")
  121.          oNodoImp.appendChild oNombre
  122.          Set oValor = oXMLDocFSGS.createNode(NODE_TEXT, "", "")
  123.          oValor.nodeValue = accion  'I para los nuevos, U para los que ya existen de forma que se actualice PRES5_IMPORTES sobre el registro activo
  124.         oNombre.appendChild oValor
  125.          '        <FEC_INI> Fecha inicio validez (mm-dd-yyyy)</FEC_INI>
  126.         Set oNombre = oXMLDocFSGS.createNode(NODE_ELEMENT, "FEC_INI", "")
  127.          oNodoImp.appendChild oNombre
  128.          Set oValor = oXMLDocFSGS.createNode(NODE_TEXT, "", "")
  129.          oValor.nodeValue = FechaINI 'meter la fecha ini calculada
  130.         oNombre.appendChild oValor
  131.          '        <FEC_FIN> Fecha fin validez (mm-dd-yyyy) </FEC_FIN>
  132.         Set oNombre = oXMLDocFSGS.createNode(NODE_ELEMENT, "FEC_FIN", "")
  133.          oNodoImp.appendChild oNombre
  134.          Set oValor = oXMLDocFSGS.createNode(NODE_TEXT, "", "")
  135.          oValor.nodeValue = FechaFIN 'meter la fecha fin calculada
  136.         oNombre.appendChild oValor
  137.          '       <MON>
  138.         Set oNombre = oXMLDocFSGS.createNode(NODE_ELEMENT, "MON", "")
  139.          oNodoImp.appendChild oNombre
  140.          Set oValor = oXMLDocFSGS.createNode(NODE_TEXT, "", "")
  141.          oValor.nodeValue = strInAMOUNTCURRENCY 'Valor por defecto
  142.         oNombre.appendChild oValor
  143.          '       <PRES>
  144.         Set oNombre = oXMLDocFSGS.createNode(NODE_ELEMENT, "PRES", "")
  145.          oNodoImp.appendChild oNombre
  146.          Set oValor = oXMLDocFSGS.createNode(NODE_TEXT, "", "")
  147.          oValor.nodeValue = importe 'dependiendo de si viene del asset meter el de cada asset y si no meter el total
  148.         oNombre.appendChild oValor
  149.          
  150.          '</IMPORTES>
  151.     End If
  152.      
  153.      ''pres5_uons
  154.     If accion = "I" Then 'En las modificaciones este dato no cambia
  155.         '<UONS>
  156.         Set oNodoUons = oXMLDocFSGS.createNode(NODE_ELEMENT, "UONS", "")
  157.          oNodoLinea.appendChild oNodoUons
  158.          '       <UON>
  159.         Set oNodoUon = oXMLDocFSGS.createNode(NODE_ELEMENT, "UON", "")
  160.          oNodoUons.appendChild oNodoUon
  161.          '           <ACCION_UON>Acción que afecta a las unidades organizativas relacionadas , CHAR(1)</ACCION_UON>
  162.         Set oNombre = oXMLDocFSGS.createNode(NODE_ELEMENT, "ACCION_UON", "")
  163.          oNodoUon.appendChild oNombre
  164.          Set oValor = oXMLDocFSGS.createNode(NODE_TEXT, "", "")
  165.          oValor.nodeValue = accion
  166.          oNombre.appendChild oValor
  167.          '                <UON1> Código nivel UON1 VARCHAR(3)</UON1>
  168.         Set oNombre = oXMLDocFSGS.createNode(NODE_ELEMENT, "UON1", "")
  169.          oNodoUon.appendChild oNombre
  170.          Set oValor = oXMLDocFSGS.createNode(NODE_TEXT, "", "")
  171.          oValor.nodeValue = sUON1
  172.          oNombre.appendChild oValor
  173.          '                <UON2> Código nivel UON2 VARCHAR(3)</UON2>
  174.         Set oNombre = oXMLDocFSGS.createNode(NODE_ELEMENT, "UON2", "")
  175.          oNodoUon.appendChild oNombre
  176.          Set oValor = oXMLDocFSGS.createNode(NODE_TEXT, "", "")
  177.          oValor.nodeValue = sUON2
  178.          oNombre.appendChild oValor
  179.          '       </UON>
  180.         '</UONS>
  181.     End If
  182.      '</PARTIDA>
  183. '        End If
  184. '        '</PARTIDAS>
  185.  
  186.     Set ostream = Nothing    
  187.     Set Archivo = Nothing
  188.     Set Carpeta = Nothing
  189.     Set oFos = Nothing
  190.     Exit Sub
  191.    
  192. error:
  193. End Sub

Necesito que lo que introduzco en la función TratarAsset la ultima vez que accedo a ella, es decir, fuera del for, la parte del xml que me genera la coloque arriba del todo, ya que esta tiene que ser la primera parte del xml.
Si queréis os puedo mostrar el xml que me genera.
Alguien me puede ayudar?
__________________
Gracias por todo;

Un saludo