XML función damevalor1 |
Responder |
Autor | |
SkaryBlondi
Habitual Unido: 24/Octubre/2020 Localización: Asturias Estado: Sin conexión Puntos: 89 |
Opciones de entrada
Gracias(0)
Enviado: 05/Octubre/2021 a las 15:55 |
Buenas tardes Por diversas cuestiones tengo que trabajar últimamente con muchos
ficheros XML para lo cual las funciones sobre el tratamiento
de los citados ficheros de Mihura me han ayudado mucho. Me
he encontrado un problema, que he resuelto y os traslado, por si te es
de utilidad a otros miembros del foro. Con la siguiente función Function DameValor1(ByRef Nodo As MSXML2.IXMLDOMNode, Valor As String) As String Dim xmlSingleNode As MSXML2.IXMLDOMNode ' esta funcion selecciona el primer nodo del NODO que se le pasa como argumento y que cumple el valor ' que se le pasa y devuelve el atributo texto del mismo, es decir el valor ' no se puede usar para los items que se repiten porque solo veríamos el primero e ignoraríamos el resto Set xmlSingleNode = Nodo.SelectSingleNode(Valor) If Not xmlSingleNode Is Nothing Then DameValor1 = xmlSingleNode.Text End If Set xmlSingleNode = Nothing Debug.Print DameValor1 End Function Se recuperan los diversos datos de los nodos, pero en la ayuda de la función se indica lo siguiente "no se puede usar para los items que se repiten porque solo veríamos el primero e ignoraríamos el resto" Me
he encontrato con la necesidad de tratar ficheros XML de pago de
cheques con carta donde las diversas líneas se indican con la etiqueta
Ustrd y solo obtenía la primera línea del documento. Después
de darle unas cuantas vueltas se me ocurrió dejar en una variable el
contenido de la etiqueta del nivel anterior RmtInf y bingo, me depositó
concatenada en una sola variable el contenido de todas las etiquetas
Ustrd contenidas y luego solo tuve que trocear la cadena para mis fines. <PmtId> <InstrId>A11111118</InstrId> <EndToEndId>A11111118</EndToEndId> </PmtId> <Amt> <InstdAmt Ccy="EUR">000000001.00</InstdAmt> </Amt> <ChqInstr> <ChqTp>BCHQ</ChqTp> <DlvryMtd> <Cd>PUDB</Cd> </DlvryMtd> <PrtLctn>111</PrtLctn> </ChqInstr> <Cdtr> <Nm>NOMBRE PROVEEDOR</Nm> <PstlAdr> <Ctry>ES</Ctry> <AdrLine>CL DEL OLVIDO 68-2-N</AdrLine> <AdrLine>33013 OVIEDO</AdrLine> </PstlAdr> </Cdtr> <RmtInf> <Ustrd>una lnea del documento</Ustrd> <Ustrd>otra linea del documento</Ustrd> <Ustrd>otra linea del documento</Ustrd> <Ustrd>otra linea del documento</Ustrd> <Ustrd>otra linea del documento</Ustrd> <Ustrd>otra linea del documento</Ustrd> <Ustrd>otra linea del documento</Ustrd> <Ustrd>otra linea del documento</Ustrd> </RmtInf> </CdtTrfTxInf> Se lo comenté a Mihura, pero como suele ser habitual ÉL está ya de vuelta y me indicó que además del método propuesto se puede hacer de otro modo "Hay otra manera de tratar eso que dices, que es crear una variable Nodes,
asignarle la colección de nodos que cumplen un criterio y después
explotar dicha colección" y que es con otra función de sus ejemplos XML Editado por SkaryBlondi - 05/Octubre/2021 a las 16:07 |
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |