diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py index fc92a9cd9..db0defa8e 100644 --- a/openlp/plugins/songs/lib/xml.py +++ b/openlp/plugins/songs/lib/xml.py @@ -78,16 +78,32 @@ log = logging.getLogger(__name__) NAMESPACE = u'http://openlyrics.info/namespace/2009/song' NSMAP = '{' + NAMESPACE + '}' + '%s' + +def valid_XML_char_ordinal(char): + """ + Undertake the filter test. + + ``char`` + The individual character to be checked. + """ + return ( + 0x20 <= char <= 0xD7FF + or char in (0x9, 0xA, 0xD) + or 0xE000 <= char <= 0xFFFD + or 0x10000 <= char <= 0x10FFFF + ) + + def clean_xml_string(xml): """ Filter out invalid characters in xml Source + + ``xml`` + The actual text to be checked. + """ - return ''.join(char for char in xml if - 0x20 <= char <= 0xD7FF - or char in (0x9, 0xA, 0xD) - or 0xE000 <= char <= 0xFFFD - or 0x10000 <= char <= 0x10FFFF) + return ''.join(char for char in xml if valid_XML_char_ordinal(ord(char))) class SongXML(object):