Cfdi.Xml.Parser (cfdi_xml v4.0.1)

Copy Markdown

Convierte un XML CFDI a un mapa anidado al estilo de @cfdi/xml2json.

Acepta una ruta a un archivo XML o el XML directamente como cadena.

Opciones

  • :original - cuando es true, mantiene el prefijo de namespace en los nombres de elemento (cfdi:Comprobante). Por defecto los nombres se devuelven sin prefijo.
  • :keys - controla el tipo de claves del mapa resultante. :string (por defecto) usa cadenas (%{"Comprobante" => ...}), :atom usa átomos (%{Comprobante: ...}).
  • :case - controla la capitalización de los nombres. :as_is (por defecto) deja los nombres tal cual aparecen en el XML (Emisor, ClaveProdServ). :lower los pasa a minúsculas (emisor, claveprodserv) tanto en elementos como en atributos.

Namespaces

Las declaraciones xmlns y xmlns:<prefijo> no se mezclan con los atributos del elemento; en su lugar se agrupan bajo la llave meta, usando el prefijo como llave. Esto evita átomos feos del estilo :"xmlns:iedu" cuando se trabaja con keys: :atom:

%{instEducativas: %{
    meta: %{iedu: "http://www.sat.gob.mx/iedu"},
    rfcPago: "...",
    ...
  }}

Summary

Types

opts()

@type opts() :: [original: boolean(), keys: :string | :atom, case: :as_is | :lower]

Functions

parse(path_or_xml, opts \\ [])

@spec parse(String.t(), opts()) :: map()