Skip to content

Como ler o XML de um MDF-e? #132

Open

Description

@deiviszi

Fiz o exemplo:

from nfelib.mdfe.bindings.v3_0.mdfe_v3_00 import Mdfe
from nfelib.mdfe.bindings.v3_0.mdfe_modal_rodoviario_v3_00 import Rodo
mdfe = Mdfe.from_path("meu-mdfe.xml")
assert isinstance(mdfe, Mdfe) 

print("CNPJ Emitente:", mdfe.infMDFe.emit.CNPJ)
print("Nome Emitente:", mdfe.infMDFe.emit.xNome)
print("UF Carregamento:", mdfe.infMDFe.ide.UFIni)

any_elem = mdfe.infMDFe.infModal.any_element
rodo = Rodo(any_elem)
assert isinstance(rodo, Rodo)
print(rodo.veicTracao.placa) #aqui diz que não existe o atributo placa

Consigo ler normalmente os dados de infMDFe, porém não consigo ler os dados do infModal, até tentei fazer uma conversão aí (não tenho certeza se fiz certo a conversão), mas não funcionou.

Activity

  1. Kronossaurus commented on Aug 25, 2025

    @Kronossaurus

    Consegui usando mdfe.infMDFe.infModal.any_element.children[1].children[1].text

    Usando o seguinte arquivo xml de exemplo gerado com ajuda do chatGPT:

    meu-mdfe.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <MDFe xmlns="http://www.portalfiscal.inf.br/mdfe" versao="3.00">
      <infMDFe Id="MDFe35150812345678000123550010000000011000000012">
        <ide>
          <cUF>35</cUF>
          <tpAmb>2</tpAmb>
          <tpEmit>1</tpEmit>
          <mod>58</mod>
          <serie>1</serie>
          <nMDF>123</nMDF>
          <cMDF>12345678</cMDF>
          <cDV>2</cDV>
          <modal>1</modal>
          <dhEmi>2025-08-25T10:15:30-03:00</dhEmi>
          <tpEmis>1</tpEmis>
          <procEmi>0</procEmi>
          <verProc>1.0.0</verProc>
          <UFIni>SP</UFIni>
          <UFFim>RJ</UFFim>
        </ide>
        <emit>
          <CNPJ>12345678000123</CNPJ>
          <IE>123456789</IE>
          <xNome>Transportadora Exemplo LTDA</xNome>
          <enderEmit>
            <xLgr>Rua das Flores</xLgr>
            <nro>100</nro>
            <xBairro>Centro</xBairro>
            <cMun>3550308</cMun>
            <xMun>São Paulo</xMun>
            <CEP>01000000</CEP>
            <UF>SP</UF>
            <fone>1133334444</fone>
          </enderEmit>
        </emit>
        <infModal versaoModal="3.00">
          <rodo>
            <RNTRC>12345678</RNTRC>
            <veicTracao>
              <cInt>ABC1234</cInt>
              <placa>ABC1D23</placa>
              <UF>SP</UF>
              <tpCar>02</tpCar>
              <tpRod>01</tpRod>
            </veicTracao>
            <veicReboque>
              <cInt>REB0001</cInt>
              <placa>XYZ9Z99</placa>
              <UF>RJ</UF>
              <tpCar>01</tpCar>
            </veicReboque>
            <condutor>
              <xNome>João da Silva</xNome>
              <CPF>12345678901</CPF>
            </condutor>
          </rodo>
        </infModal>
        <tot>
          <qCTe>10</qCTe>
          <qNFe>5</qNFe>
          <vCarga>50000.00</vCarga>
          <cUnid>01</cUnid>
          <qCarga>15000.00</qCarga>
        </tot>
      </infMDFe>
    </MDFe>

    então no código mdfe.infMDFe.infModal.any_element.children[1].children[1].text:

    o primeiro children é uma lista com [RNTRC, veicTracao, veicReboque, condutor]
    o segundo children é uma lista dos atributos de veicTracao [cInt, placa, UF, tpCar, tpRod]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions