在Vb Net中读取多个XML?

时间:2018-10-10 17:22:53

标签: .net xml vb.net

我在读取XML时遇到问题。我的程序在一开始就做得很好,然后失败了。我必须读取一个文件夹中的所有xml并将其显示在excel工作表上,但是我的程序读取了所有文件,但只将最后一个文件写入了该文件夹中。我认为For each上存在问题,但我迷路了。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim Version_xml As String
    Dim implocaltraladados As Decimal
    Dim implocalretenidos As Decimal
    Dim retenidos As Decimal
    Dim trasladados As Decimal
    Dim Subtotal 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 total As Decimal
    Dim UUID As String
    Dim VarConceptos As XmlNodeList
    On Error Resume Next
    Dim VarDocumentoXML As XmlDocument = New XmlDocument()
    Dim VarManager As XmlNamespaceManager = New XmlNamespaceManager(VarDocumentoXML.NameTable)

    Dim folderPath = "C:\Users\C-Juarezl\Desktop\Xml\"


    For Each filePath In Directory.GetFiles(folderPath, "*.xml", SearchOption.AllDirectories)
        VarDocumentoXML.Load(filePath)  'Aqui puedes definir la ruta del archivo mediante un OpenFileDialog o  algun otro metodo para especificar
    Next
    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
    Label2.Text = Emisor_Nombre
    Label4.Text = UUID
    Label5.Text = total.ToString("c")
    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
    Next
End Sub

0 个答案:

没有答案