code: def process_nxml_file(fname, output_fmt='json', outbuf=None, cleanup=True,
                        **kwargs):
      
      sp = None
      out_fname = None
      try:
          out_fname = run_sparser(fname, output_fmt, outbuf, **kwargs)
          sp = process_sparser_output(out_fname, output_fmt)
      except Exception as e:
          logger.error("Sparser failed to run on %s." % fname)
          logger.exception(e)
      finally:
          if out_fname is not None and os.path.exists(out_fname) and cleanup:
              os.remove(out_fname)
  
      return sp
docs: Return processor with Statements extracted by reading an NXML file.
  
      Parameters
      ----------
      fname : str
          The path to the NXML file to be read.
      output_fmt: Optional[str]
          The output format to obtain from Sparser, with the two options being
          'json' and 'xml'. Default: 'json'
      outbuf : Optional[file]
          A file like object that the Sparser output is written to.
      cleanup : Optional[bool]
          If True, the output file created by Sparser is removed.
          Default: True
  
      Returns
      -------
      sp : SparserXMLProcessor or SparserJSONProcessor depending on what output
      format was chosen.