def process_csxml_file(self, filename, interval=None, lazy=False):
        """Processes a filehandle to MedScan csxml input into INDRA
        statements.

        The CSXML format consists of a top-level `<batch>` root element
        containing a series of `<doc>` (document) elements, in turn containing
        `<sec>` (section) elements, and in turn containing `<sent>` (sentence)
        elements.

        Within the `<sent>` element, a series of additional elements appear in
        the following order:

        * `<toks>`, which contains a tokenized form of the sentence in its text
          attribute
        * `<textmods>`, which describes any preprocessing/normalization done to
          the underlying text
        * `<match>` elements, each of which contains one of more `<entity>`
          elements, describing entities in the text with their identifiers.
          The local IDs of each entities are given in the `msid` attribute of
          this element; these IDs are then referenced in any subsequent SVO
          elements.
        * `<svo>` elements, representing subject-verb-object triples. SVO
          elements with a `type` attribute of `CONTROL` represent normalized
          regulation relationships; they often represent the normalized
          extraction of the immediately preceding (but unnormalized SVO
          element). However, in some cases there can be a "CONTROL" SVO
          element without its parent immediately preceding it.

        Parameters
        ----------
        filename : string
            The path to a Medscan csxml file.
        interval : (start, end) or None
            Select the interval of documents to read, starting with the
            `start`th document and ending before the `end`th document. If
            either is None, the value is considered undefined. If the value
            exceeds the bounds of available documents, it will simply be
            ignored.
        lazy : bool
            If True, only create a generator which can be used by the
            `get_statements` method. If True, populate the statements list now.
        """
        if interval is None:
            interval = (None, None)

        tmp_fname = tempfile.mktemp(os.path.basename(filename))
        fix_character_encoding(filename, tmp_fname)

        self.__f = open(tmp_fname, 'rb')
        self._gen = self._iter_through_csxml_file_from_handle(*interval)
        if not lazy:
            for stmt in self._gen:
                self.statements.append(stmt)
        return
Processes a filehandle to MedScan csxml input into INDRA
        statements.

        The CSXML format consists of a top-level `<batch>` root element
        containing a series of `<doc>` (document) elements, in turn containing
        `<sec>` (section) elements, and in turn containing `<sent>` (sentence)
        elements.

        Within the `<sent>` element, a series of additional elements appear in
        the following order:

        * `<toks>`, which contains a tokenized form of the sentence in its text
          attribute
        * `<textmods>`, which describes any preprocessing/normalization done to
          the underlying text
        * `<match>` elements, each of which contains one of more `<entity>`
          elements, describing entities in the text with their identifiers.
          The local IDs of each entities are given in the `msid` attribute of
          this element; these IDs are then referenced in any subsequent SVO
          elements.
        * `<svo>` elements, representing subject-verb-object triples. SVO
          elements with a `type` attribute of `CONTROL` represent normalized
          regulation relationships; they often represent the normalized
          extraction of the immediately preceding (but unnormalized SVO
          element). However, in some cases there can be a "CONTROL" SVO
          element without its parent immediately preceding it.

        Parameters
        ----------
        filename : string
            The path to a Medscan csxml file.
        interval : (start, end) or None
            Select the interval of documents to read, starting with the
            `start`th document and ending before the `end`th document. If
            either is None, the value is considered undefined. If the value
            exceeds the bounds of available documents, it will simply be
            ignored.
        lazy : bool
            If True, only create a generator which can be used by the
            `get_statements` method. If True, populate the statements list now.