Return a list of elements those match the searching condition.
        If the XML input has namespaces, elements and attributes with prefixes
        in the form prefix:sometag get expanded to {namespace}element where the
        prefix is replaced by the full URI.  Also, if there is a default
        namespace, that full URI gets prepended to all of the non-prefixed tags.
        Element names can contain letters, digits, hyphens, underscores, and
        periods.  But element names must start with a letter or underscore.
        Here the while-clause is to set searching condition from
        `/element1/element2` to `/{namespace}element1/{namespace}/element2`

        Parameters:
            element: Searching condition to search certain elements in an XML
                     file. For more details about how to set searching
                     condition, refer to section `19.7.2.1. Example` and
                     `19.7.2.2. Supported XPath syntax` in
                     https://docs.python.org/2/library/xml.etree.elementtree.html
            xmlns:   XML namespace, default value to None.
                     None means that xmlns equals to the `self.xmlns` (default
                     namespace) instead of "" all the time.  Only string type
                     parameter (including "") will be regarded as a valid xml
                     namespace.
        Returns:
            (list): List of elements those match the searching condition

def get_elements(self, element, xmlns=None):
        """
        Return a list of elements those match the searching condition.
        If the XML input has namespaces, elements and attributes with prefixes
        in the form prefix:sometag get expanded to {namespace}element where the
        prefix is replaced by the full URI.  Also, if there is a default
        namespace, that full URI gets prepended to all of the non-prefixed tags.
        Element names can contain letters, digits, hyphens, underscores, and
        periods.  But element names must start with a letter or underscore.
        Here the while-clause is to set searching condition from
        `/element1/element2` to `/{namespace}element1/{namespace}/element2`

        Parameters:
            element: Searching condition to search certain elements in an XML
                     file. For more details about how to set searching
                     condition, refer to section `19.7.2.1. Example` and
                     `19.7.2.2. Supported XPath syntax` in
                     https://docs.python.org/2/library/xml.etree.elementtree.html
            xmlns:   XML namespace, default value to None.
                     None means that xmlns equals to the `self.xmlns` (default
                     namespace) instead of "" all the time.  Only string type
                     parameter (including "") will be regarded as a valid xml
                     namespace.
        Returns:
            (list): List of elements those match the searching condition
        """
        real_element = ""
        real_xmlns = ""

        if xmlns is None:
            real_xmlns = "{" + self.xmlns + "}" if self.xmlns else ""
        else:
            real_xmlns = "{" + xmlns + "}"

        while "/" in element:
            l = element.split("/", 1)
            element = l[1]
            real_element += l[0] + "/"
            if element[0].isalpha() or element[0] == "_":
                real_element += real_xmlns

        real_element += element
        return self.dom.findall(real_element)