Get values of a XML archive



I have a question. I'm trying to get some values of a XML archive. Right now I can list most of them but when it comes to the last 2 nodes I have a problem, I always get the firstchild of the first node. For example



<TipoSaldo CodTipoSaldo="1" Descripción="Principal">
<Saldos>
<Plazos>
<Plazo Código="0" Descripción="Muy corto plazo">
<Saldo CodEntidad="100" Instrumento="BEMSM" CodMoneda="30" Principal="100000" EjercicioAnterior="0.0000" EjercicioCorriente="0.0000" />
</Plazo>
<Plazo Código="2" Descripción="Mediano plazo">
<Saldo CodEntidad="100" Instrumento="BEMV" CodMoneda="1" Principal="563870500000.0000" EjercicioAnterior="0.0000" EjercicioCorriente="0.0000" />
</Plazo>
</Plazos>
</Saldos>
</TipoSaldo>


I can see the values of line Saldo CodEntidad="100" Instrumento="BEMSM" and thats ok but when I try to get the values with a for cicle for the same line on the other node Saldo CodEntidad="100" Instrumento="BEMV" I keep getting the same values of the FIRST node Saldo CodEntidad="100" Instrumento="BEMSM" ... and not Saldo CodEntidad="100" Instrumento="BEMV"... .


This is the section of the main code where I get the values



'Iniciamos el ciclo de lectura
For index = 0 To contador

'Obtenemos el valor del codigo servicio
Dim mServicio = elementos.FirstChild.ChildNodes.ItemOf(index).Attributes.GetNamedItem("CodServicio").Value
list.Add(mServicio)

'segundo contador para recorrer el nodo de tipo saldo
Dim contador2 = elementos.FirstChild.FirstChild.FirstChild.ChildNodes.Count - 1

For index2 = 0 To contador2

'nodo Ej: <TipoSaldo CodTipoSaldo="" Descripción="">
'obtenemos valores anteriores
Dim mCodigoTipoSaldo = elementos.FirstChild.FirstChild.FirstChild.ChildNodes.ItemOf(index2).Attributes.GetNamedItem("CodTipoSaldo").Value
Dim mDescTipoSaldo = elementos.FirstChild.FirstChild.FirstChild.ChildNodes.ItemOf(index2).Attributes.GetNamedItem("Descripción").Value
list.Add(mCodigoTipoSaldo)
list.Add(mDescTipoSaldo) 'agregamos datos a la lista

'tercer contador para el nodo de plazos
Dim contador3 = elementos.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.ChildNodes.Count - 1

For index3 = 0 To contador3

'nodo Ej: <Plazo Código="" Descripción="">
Dim mCodigoTipoPlazo = elementos.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.ChildNodes.ItemOf(index3).Attributes.GetNamedItem("Código").Value
Dim mDescTipoPlazo = elementos.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.ChildNodes.ItemOf(index3).Attributes.GetNamedItem("Descripción").Value
list.Add(mCodigoTipoPlazo)
list.Add(mDescTipoPlazo) 'agregamos datos a la lista

'cuarto contador para nodo final de saldos
Dim contador4 = elementos.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.ChildNodes.Count - 1

Dim item As New Object 'creo un nuevo objeto para agregar a la lista y que no se repitan valores

For index4 = 0 To contador4
'nodo Ej: <Saldo CodEntidad="100" Instrumento="BEMSM" ... EjercicioCorriente="0.0000" />
Dim mSaldoInstrumento = elementos.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.ChildNodes.ItemOf(index4).Attributes.GetNamedItem("Instrumento").Value
Dim mSaldoPrincipal = elementos.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.ChildNodes.ItemOf(index4).Attributes.GetNamedItem("Principal").Value
Dim mEjercicioCorriente = elementos.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.FirstChild.ChildNodes.ItemOf(index4).Attributes.GetNamedItem("EjercicioCorriente").Value

list.Add(mSaldoInstrumento)
list.Add(mSaldoPrincipal)
list.Add(mEjercicioCorriente) 'agregamos valores a la lista

Next

Console.Write(" Tipo Plazo: " & mCodigoTipoPlazo _
& " Descripcion Tipo Plazo: " & mDescTipoPlazo _
)

Next


Any help or idea would be perfect ! Thanks a lot !


No comments:

Post a Comment