def parse_xhtml_species_notes(entry):
properties = {}<EOL>if entry.xml_notes is not None:<EOL><INDENT>cobra_notes = dict(parse_xhtml_notes(entry))<EOL>for key in ('<STR_LIT>', '<STR_LIT>'):<EOL><INDENT>if key in cobra_notes:<EOL><INDENT>properties[key] = cobra_notes[key]<EOL><DEDENT><DEDENT>if '<STR_LIT>' in cobra_notes:<EOL><INDENT>properties['<STR_LIT>'] = cobra_notes['<STR_LIT>']<EOL><DEDENT>if '<STR_LIT>' in cobra_notes:<EOL><INDENT>properties['<STR_LIT>'] = cobra_notes['<STR_LIT>']<EOL><DEDENT>if '<STR_LIT>' in cobra_notes:<EOL><INDENT>try:<EOL><INDENT>value = int(cobra_notes['<STR_LIT>'])<EOL><DEDENT>except ValueError:<EOL><INDENT>logger.warning(<EOL>'<STR_LIT>'<EOL>'<STR_LIT>'.format(<EOL>entry.id, cobra_notes['<STR_LIT>']))<EOL>value = cobra_notes['<STR_LIT>']<EOL><DEDENT>properties['<STR_LIT>'] = value<EOL><DEDENT><DEDENT>return properties<EOL>
Return species properties defined in the XHTML notes.

    Older SBML models often define additional properties in the XHTML notes
    section because structured methods for defining properties had not been
    developed. This will try to parse the following properties: ``PUBCHEM ID``,
    ``CHEBI ID``, ``FORMULA``, ``KEGG ID``, ``CHARGE``.

    Args:
        entry: :class:`SBMLSpeciesEntry`.