Hola amigos, estoy atorado tratando de leer los CFDI:CONCEPTOS de varios xml. Son varias facturas (xml) que tengo que verificar que el valorUnitario sea el correcto segun el NoDescripcion. Pero tengo problema al tratar de contar cuantos conceptos contiene e iniciar un ciclo para leerlos.
-<cfdi:Conceptos>
<cfdi:Concepto importe="646425.00" valorUnitario="13.00" descripcion="GLUCOSA SERICA Y PARA LIQUIDOS ORGANICOS UNIDAD : PRUEBAS<br>" noIdentificacion="a023" unidad="SR" cantidad="49725.0000"/>
<cfdi:Concepto importe="604825.00" valorUnitario="13.00" descripcion="UREA SERICA Y URINARIA UNIDAD : PRUEBAS<br>" noIdentificacion="b345" unidad="SR" cantidad="46525.0000"/>
<cfdi:Concepto importe="660725.00" valorUnitario="13.00" descripcion="CREATININA SERICA Y URINARIA. UNIDAD : PRUEBAS<br>" noIdentificacion="b234" unidad="SR" cantidad="50825.0000"/>
<cfdi:Concepto importe="476450.00" valorUnitario="13.00" descripcion="ACIDO URICO SERICA Y URINARIA. UNIDAD : PRUEBAS<br>" noIdentificacion="b178" unidad="SR" cantidad="36650.0000"/>
<cfdi:Concepto importe="438425.00" valorUnitario="13.00" descripcion="COLESTEROL PRUEBAS UNIDAD : PRUEBAS<br>" noIdentificacion="b084" unidad="SR" cantidad="33725.0000"/>
</cfdi:Conceptos>
Este es mi c??digo donde no he podido contar cuantos conceptos son, y tampoco declarar el ciclo para extraer los datos.
Imports System.Xml
try
Dim mValorUnitario as Decimal
Dim mNoIdentificacion as String
Dim m_xmld As New System.Xml.XmlDocument
Dim m_nodelist As System.Xml.XmlNodeList
Dim m_node As System.Xml.XmlNode
m_xmld = New XmlDocument()
m_xmld.Load("C:\XML\invoice.xml")
m_nodelist = m_xmld.ChildNodes()
For Each m_node In m_nodelist
Dim mValorUnitario = m_node.Attributes.GetNamedItem("cfdi:conceptos").ChildNodes(0).Attributes.GetNamedItem("valorUnitario").Value
Dim mNoIdentificacion = m_node.Attributes.GetNamedItem("cfdi:conceptos").ChildNodes(0).Attributes.GetNamedItem("noIdentificacion").Value
'aqui insertaria un c??digo para validar con la base de datos
Next
Catch ex As Exception
End try
Les agradezco la ayuda de antemano. Saludos

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.
CARTA PORTE V3.1
ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03
.
AYUDA!!! Leer cdfi:conceptos de XML
-
- Mensajes: 2
- Registrado: Vie Jul 08, 2016 12:43 am
-
- Mensajes: 502
- Registrado: Mar Dic 28, 2010 1:12 pm
Re: AYUDA!!! Leer cdfi:conceptos de XML
No uso VB,
??No te haria falta un "try" dentro del ciclo "for" para procesar excepciones en cada concepto y que no se termine el ciclo?
digamos:
En este ejemplo, los cuenta al procesarlos, pero podrias contarlos en otro ciclo fuera del c??digo que muestras. No se si VB tenga facilidad para contar los elementos "Concepto" dentro de "Conceptos".
Como dije, no uso VB pero "la idea es esa"
??No te haria falta un "try" dentro del ciclo "for" para procesar excepciones en cada concepto y que no se termine el ciclo?
digamos:
Código: Seleccionar todo
try
dim...
dim nCuantos as Integer
nCuantos = 0
For Each m_node In m_nodelist
try
' ambos atributos son opcionales podrian no venir.
Dim mValorUnitario...
catch ... 'atrapar problemas posiblmente sin terminar el ciclo
end try
nCuantos = nCuantos + 1 'al terminar te diria cuantos encontro
next
catch ...
end try
Como dije, no uso VB pero "la idea es esa"
-
- Mensajes: 2
- Registrado: Vie Jul 08, 2016 12:43 am
Re: AYUDA!!! Leer cdfi:conceptos de XML
Mucha gracias s3cr3to por tu respuesta.
Les comparto como he podido saber cuantos conceptos tiene un xml (factura electronica), y extraer cualquier elemento de cada concepto.
codigo VB
Les comparto como he podido saber cuantos conceptos tiene un xml (factura electronica), y extraer cualquier elemento de cada concepto.
codigo VB
Código: Seleccionar todo
Dim nsCFDi As XNamespace = "http://www.sat.gob.mx/cfd/3" 'para que pueda identificar el prefijo CFDI
Dim archivoXML As XDocument = XDocument.Load("C:\XML\books.xml") 'selecciona y abre la factura electr??nica xml
Dim importe As Integer = 0 'contador para saber cuantos conceptos tiene la factura
For Each lconcepto As XElement In archivoXML.Descendants(nsCFDi + "Comprobante").Elements(nsCFDi + "Conceptos").Elements() 'ciclo que recorre todos los conceptos de la factura
Dim Name As String = lconcepto.Attribute("descripcion").Value 'obtiene el valor de la descripci??n para darle tratamiento posterior
importe = importe + 1
Next
MsgBox(importe & " descripciones") 'imprime cuantos conceptos encontro