extractBasicInfo static method

Map<String, String?> extractBasicInfo(
  1. String xmlString
)

Extrai informações resumidas da NFSe de forma rápida.

Parâmetros:

  • xmlString: String contendo o XML da NFSe.

Retorno:

  • Um Map<String, String?> com informações básicas da NFSe.

Exemplo:

final info = NfseParser.extractBasicInfo(xmlString);
print('Número: ${info['numero']}');
print('Valor: ${info['valor']}');

Implementation

static Map<String, String?> extractBasicInfo(String xmlString) {
  try {
    final document = XmlDocument.parse(xmlString);

    if (!_isNfseNacional(document)) {
      return {};
    }

    // Procura infDPS em qualquer profundidade
    final infDPSElements = document.findAllElements('infDPS');
    if (infDPSElements.isEmpty) {
      return {};
    }

    final infDPS = infDPSElements.first;

    return {
      'numero': _getElementText(infDPS, 'nDPS'),
      'serie': _getElementText(infDPS, 'serie'),
      'dataEmissao': _getElementText(infDPS, 'dhEmi'),
      'dataCompetencia': _getElementText(infDPS, 'dCompet'),
      'cnpjPrestador': _getElementText(infDPS, 'CNPJ'),
      'valorServico': _getElementText(
        infDPS.findAllElements('vServ').isNotEmpty
            ? infDPS.findAllElements('vServ').first.parent as XmlElement
            : infDPS,
        'vServ',
      ),
      'descricaoServico': _getElementText(
        infDPS.findAllElements('xDescServ').isNotEmpty
            ? infDPS.findAllElements('xDescServ').first.parent as XmlElement
            : infDPS,
        'xDescServ',
      ),
    };
  } catch (e) {
    return {};
  }
}