Imports System.Collections.Generic
Imports System.Collections
Imports System.Collections.ObjectModel
Imports System.Reflection
Imports System.Xml.Serialization
Imports System.Xml.Schema
Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim folderPath = "C:\Users\C-Juarezl\Desktop\Xml\"
For Each filePath In Directory.GetFiles(folderPath, "*.xml", SearchOption.AllDirectories)
Dim Version_xml As String
Dim implocaltraladados As Decimal
Dim implocalretenidos As Decimal
Dim trasladados As Decimal
Dim valor_noIdentificacion As String
Dim preciounitarioxml As Decimal
Dim importeconcepto As Decimal
Dim cantidadvendida As Decimal
Dim subtotalclave As Decimal = 0
Dim descripcionxml As String
Dim Emisor_Nombre As String
Dim VarConceptos As XmlNodeList
Dim VarDocumentoXML As XmlDocument = New XmlDocument()
Dim VarManager As XmlNamespaceManager = New XmlNamespaceManager(VarDocumentoXML.NameTable)
VarDocumentoXML.Load(filePath)
VarManager.AddNamespace("cfdi", "http://www.sat.gob.mx/cfd/3")
VarManager.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital")
VarManager.AddNamespace("implocal", "http://www.sat.gob.mx/implocal")
Version_xml = VarDocumentoXML.SelectSingleNode("/cfdi:Comprobante/@Version", VarManager).InnerText
total = VarDocumentoXML.SelectSingleNode("/cfdi:Comprobante/@Total", VarManager).InnerText
Emisor_Nombre = VarDocumentoXML.SelectSingleNode("/cfdi:Comprobante/cfdi:Emisor/@Nombre", VarManager).InnerText
UUID = VarDocumentoXML.SelectSingleNode("/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital/@UUID", VarManager).InnerText
implocalretenidos = VarDocumentoXML.SelectSingleNode("/cfdi:Comprobante/cfdi:Complemento/implocal:ImpuestosLocales/@TotaldeRetenciones", VarManager).InnerText
implocaltraladados = VarDocumentoXML.SelectSingleNode("/cfdi:Comprobante/cfdi:Complemento/implocal:ImpuestosLocales/@TotaldeTraslados", VarManager).InnerText
retenidos = VarDocumentoXML.SelectSingleNode("/cfdi:Comprobante/cfdi:Impuestos/@TotalImpuestosRetenidos", VarManager).InnerText
trasladados = VarDocumentoXML.SelectSingleNode("/cfdi:Comprobante/cfdi:Impuestos/@TotalImpuestosTrasladados", VarManager).InnerText
Subtotal = VarDocumentoXML.SelectSingleNode("/cfdi:Comprobante/@SubTotal", VarManager).InnerText
VarConceptos = VarDocumentoXML.SelectNodes("/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto", VarManager)
For Each node In VarConceptos
valor_noIdentificacion = node.attributes("NoIdentificacion").value
preciounitarioxml = node.attributes("ValorUnitario").value
importeconcepto = node.attributes("Importe").value
cantidadvendida = node.attributes("Cantidad").value
subtotalclave = node.attributes("Importe").value
descripcionxml = node.attributes("Descripcion").value
Dim xml as String = GetXml()
Function GetXml() As String
Dim xml as String = <myvar>
Public Module XmlSerializationHelper
<System.Runtime.CompilerServices.Extension> _
Public Function LoadFromXML(Of T)(xmlString As String) As T
Using reader As New StringReader(xmlString)
Return DirectCast(New XmlSerializer(GetType(T)).Deserialize(reader), T)
<System.Runtime.CompilerServices.Extension> _
Public Function GetXml(Of T)(obj As T, Optional omitStandardNamespaces As Boolean = False) As String
Dim ns As XmlSerializerNamespaces = Nothing
If omitStandardNamespaces Then
ns = New XmlSerializerNamespaces()
Using textWriter = New StringWriter()
Dim settings = New XmlWriterSettings() With { _
Using xmlWriter = System.Xml.XmlWriter.Create(textWriter, settings)
Dim serializer as New XmlSerializer(obj.GetType())
serializer.Serialize(xmlWriter, obj, ns)
Return textWriter.ToString()
<System.Runtime.CompilerServices.Extension> _
Public Function GetOuterXml(node as XmlNode, Optional indent as Boolean = true) as String
Using textWriter = New StringWriter()
Dim settings = New XmlWriterSettings() With { _
.OmitXmlDeclaration = true _
Using xmlWriter = System.Xml.XmlWriter.Create(textWriter, settings)
Return textWriter.ToString()