** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Importación de un XML a través de VBA
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Importación de un XML a través de VBA

 Responder Responder
Autor
Mensaje
germanpr Ver desplegable
Nuevo
Nuevo


Unido: 18/Febrero/2022
Localización: Sevilla
Estado: Sin conexión
Puntos: 1
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita germanpr Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Importación de un XML a través de VBA
    Enviado: 18/Febrero/2022 a las 13:12
Buenas a todos.

Soy novato en el foro y recurro a él porque mis conocimientos de Access son bastante limitados aunque tengo conocimientos avanzados en VBA.

Os pongo en situación.
Tengo un XML que quiero importar a una tabla de Access existente.
Dicho XML tiene una estructura de la siguiente forma aprox:
<alumno>
<identificacion @id="28444555A">
   <nombre>Pepe</nombre>
   <apellidos>Gotera</apellidos>
</identificacion>
<datos_postales>
<direccion>Desengaño 21</direccion>
<municipio>Sevilla</municipio>
<provincia>Sevilla</provincia>
<cp>41010</cp>
</datos_postales>
<datos_contacto>
<telefono>954000000</telefono>
<movil>600000000</movil>
<email>pepe.gotera@gmailer.com</email.com
</alumno>

El fichero puede tener unos 80.000 registros.
He intentado acceder al fichero, leer los nodos alumno e ir sacando los datos en variables. Luego con esas variables montar una consulta INSERT INTO e insertar en la tabla correspondiente.
Si lo hago con un XML con 5 alumnos lo hace bien, si lo hago con un XML de 80.000 registros como que tarda bastante (ya va por casi 2 horas).

He mirado para importar el XML directamente a una tabla y hacer luego un INSERT INTO alumnos VALUES SELECT * from nuevosAlumnos o algo así y he visto el metodo Application.ImportXML pero al lanzarlo me crea una tabla por cada nodo y en esa tabla mete los datos de esos nodos...por ejemplo me crea una tabla nombre, una tabla apellidos, una tabla telefono....etc....

¿Habria alguna forma de importar todo a una misma tabla guardandome la trasladando la estructura del XML como estructura de la tabla?

Gracias de antemano y espero haberme explicado bien :)
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14011
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 18/Febrero/2022 a las 13:27
Hola, bienvenido al foro.

Échale un vistazo a esto:

          Importar XML con DOM
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
emiliove Ver desplegable
Administrador
Administrador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5694
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita emiliove Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 18/Febrero/2022 a las 16:20
Aparte de lo que dice el señor Mihura, tu estructura del xml no es valida, debería de ser:
- <alumno>
- <identificacion id="28444555A"> 'Aqui tienes un valor @ no valido
  <nombre>Pepe</nombre>
  <apellidos>Gotera</apellidos>
  </identificacion>
- <datos_postales>
  <direccion>Desengaño 21</direccion>
  <municipio>Sevilla</municipio>
  <provincia>Sevilla</provincia>
  <cp>41010</cp>
  </datos_postales>
- <datos_contacto>
  <telefono>954000000</telefono>
  <movil>600000000</movil>
  <email>pepe.gotera@gmailer.com</email> 'Aquí agregas .com y no cierras el email 
  </datos_contacto'Tampoco cierras datos contacto
</alumno> 

Tampoco no dices de que forma haces la importación pues hay varias maneras aparte de Dom como atinadamente sugiere Mihura, saludos.


Editado por emiliove - 18/Febrero/2022 a las 16:22
Arriba
RUGALB Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 21/Julio/2006
Localización: Mexico
Estado: Sin conexión
Puntos: 432
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita RUGALB Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 05/Agosto/2022 a las 18:47
Amigos, buenas tardes

disculpen la intromisión :) 

para el tipo de etiquetas "escuela:alumno" ¿cómo puedo adaptar el ejemplo del Maestro Mihura?

El XML es así:

<?xml version="1.0" encoding="utf-8"?>
<cfdi:Comprobante
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www."
    LugarExpedicion="0000"
    MetodoPago="PUE"
    TipoDeComprobante="I"
    Total="123"
    Moneda="MXN"
    Certificado="xxx"
    SubTotal="00.00"
    CondicionesDePago="Contado"
    NoCertificado="000000"
    FormaPago="03"
    Sello="XXXXXx"
    Fecha="2022-01-14T10:45:18"
    Folio="13"
    Serie="MM"
    Version="3.3"
    xmlns:cfdi="http://www.....">
    <cfdi:Emisor Rfc="AAAAAA" Nombre="XXXXX" RegimenFiscal="621"></cfdi:Emisor><cfdi:Receptor Rfc="XXXXXX" Nombre="XXXXX" UsoCFDI="G03"></cfdi:Receptor>
    <cfdi:Conceptos>
        <cfdi:Concepto ClaveProdServ="43212108" Cantidad="2" ClaveUnidad="H87" Unidad="pieza" Descripcion="Impresora Térmica de Ticket 58mm" ValorUnitario="500.00" Importe="1000.00">
            <cfdi:Impuestos>
                <cfdi:Traslados><cfdi:Traslado Base="000.00" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="000.00"></cfdi:Traslado></cfdi:Traslados>
            </cfdi:Impuestos>
        </cfdi:Concepto>
        <cfdi:Concepto ClaveProdServ="43201830" Cantidad="1" ClaveUnidad="H87" Unidad="pieza" Descripcion="Disco de Estado Sólido SSD 120GB" ValorUnitario="650.00" Importe="650.00">
            <cfdi:Impuestos>
                <cfdi:Traslados><cfdi:Traslado Base="650" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="000.00"></cfdi:Traslado></cfdi:Traslados>
            </cfdi:Impuestos>
        </cfdi:Concepto>
        <cfdi:Concepto ClaveProdServ="81111809" Cantidad="1" ClaveUnidad="E48" Unidad="servicio" Descripcion="Instalación de Software a Equipo de Cómputo" ValorUnitario="100.00" Importe="100.00">
            <cfdi:Impuestos>
                <cfdi:Traslados><cfdi:Traslado Base="100.00" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="00.00"></cfdi:Traslado></cfdi:Traslados>
            </cfdi:Impuestos>
        </cfdi:Concepto>
    </cfdi:Conceptos>
    <cfdi:Impuestos TotalImpuestosTrasladados="0000.00">
        <cfdi:Traslados><cfdi:Traslado Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="000.36"></cfdi:Traslado></cfdi:Traslados>
    </cfdi:Impuestos>
    <cfdi:Complemento>
        <tfd:TimbreFiscalDigital
            xmlns:tfd="http://www....."
            xsi:schemaLocation="http://www.....xsd"
            Version="1.1"
            UUID="000000000"
            FechaTimbrado="2022-01-14T10:57:01"
            RfcProvCertif="AAAAAAAAAAA"
            SelloCFD="XXXXXX"
            NoCertificadoSAT="000000"
            SelloSAT="000"
        />
    </cfdi:Complemento>
</cfdi:Comprobante>

Muy agradecido desde ya por sus comentarios.


Editado por RUGALB - 05/Agosto/2022 a las 18:51
Saludos desde Toluca, Estado de Mexico "El pesimista se queja del viento, el optimista espera que cambie, el realista ajusta las velas"(William Ward)
Arriba
emiliove Ver desplegable
Administrador
Administrador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5694
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita emiliove Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 05/Agosto/2022 a las 20:36
Buenas Tardes RUGALB
Por que no inicias un nuevo Hilo y vemos como puedes guardar los tributos de un xml a una tabla o en un formulario donde los desees poner.

Saludos.
Arriba
RUGALB Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 21/Julio/2006
Localización: Mexico
Estado: Sin conexión
Puntos: 432
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita RUGALB Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 05/Agosto/2022 a las 20:46
Hola Emilio, muchas gracias, hare lo que indicas. Slaudos :)
Saludos desde Toluca, Estado de Mexico "El pesimista se queja del viento, el optimista espera que cambie, el realista ajusta las velas"(William Ward)
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable