def unescape_xml(content):
"""
Escapes XML content into it's regular string value
"""
if SAX_UNESCAPE:
return unescape(content)
return HTMLParser().unescape(content)
python类unescape()的实例源码
def PrepareString(str):
return unescape(str, {"'": "'", "'" : "'", "'" : "'", """: '"'})
def get(self, unescape = False):
ele_tree = ElementTree.Element('items')
for item in self.items:
ele_tree.append(item.getXMLElement())
res = ElementTree.tostring(ele_tree) #! ????encoding='utf-8'????????????????alfred????
if unescape:
return saxutils.unescape(res)
return res
def xml_unescape(string):
"""
Strip and XML-unescape 'string'.
"""
return unescape(string.strip())
def upload_xml(self):
start_time = time.time()
f = open(self.file_name)
domains = [domain for domain in f]
f.close()
domain_name = self.file_name + '_xml'
rule_set = self.rule_name + '_XML'
file_dom = (xmlStart % {'expGUID': str(uuid4()).upper()})
for url in domains:
file_dom += ('<fpc4:Str dt:dt="string">' + (url.replace('&', '&')) + '</fpc4:Str>')
file_dom += (xmlEnd % unescape(domain_name))
dom = win32com.client.Dispatch('Msxml2.DOMDocument.3.0')
dom.async = False
dom.loadXML(file_dom)
isa_array.RuleElements.DomainNameSets.Import(dom, 0)
rule = isa_array.ArrayPolicy.PolicyRules.Item(rule_set)
rule_sets = rule.AccessProperties.DestinationDomainNameSets
rule_sets.Add(domain_name, 0)
rule.Save()
return time.time() - start_time
def unescape(value, entities=None):
_ent = unescape_entities
if entities is not None:
_ent = _ent.copy()
_ent.update(entities)
return _unescape(value, entities)
# utf-8 is hardcoded on OFS.PropertySheets as the expected
# encoding properties will be stored in. Optimally, we should use the
# same encoding as the 'default_encoding' property that is used for
# the ZMI.
def __init__(self, text, style, bulletText=None, caseSensitive=1, level=0,
snum=None, parent_id=None, node=None, section_header_depth=2):
# Issue 114: need to convert "&" to "&" and such.
# Issue 140: need to make it plain text
self.stext=re.sub(r'<[^>]*?>', '', unescape(text))
self.stext = self.stext.strip()
self.level = int(level)
self.snum = snum
self.parent_id=parent_id
self.node=node
self.section_header_depth = section_header_depth
Paragraph.__init__(self, text, style, bulletText)
def quote(s):
"""Quotes a string in such a way that it is usable inside XPath expressions."""
return unescape(quoteattr(s))
def _parse_menu_tag(self, item):
name = None
untranslated_name = None
query = None
icon = None
only_unallocated = False
dont_display = False
flags = []
subcategories = []
sortmode = SortMethods.BY_ALPHABET
item_limit = 0
for element in item.getchildren():
# ignore inline translations, we use gettext for this
if (element.tag == "Name" and
'{http://www.w3.org/XML/1998/namespace}lang' in
element.attrib):
continue
if element.tag == "Name":
untranslated_name = element.text
# gettext/xml writes stuff from software-center.menu
# out into the pot as escaped xml, so we need to escape
# the name first, get the translation and unscape it again
escaped_name = xml_escape(untranslated_name)
name = xml_unescape(gettext.gettext(escaped_name))
elif element.tag == "SCIcon":
icon = element.text
elif element.tag == 'Flags':
flags = self._parse_flags_tag(element)
elif element.tag == "Directory":
l = self._parse_directory_tag(element)
if l:
(untranslated_name, name, gettext_domain, icon) = l
elif element.tag == "Include":
query = self._parse_include_tag(element)
elif element.tag == "OnlyUnallocated":
only_unallocated = True
elif element.tag == "SCDontDisplay":
dont_display = True
elif element.tag == "SCSortMode":
sortmode = int(element.text)
if not self._verify_supported_sort_mode(sortmode):
return None
elif element.tag == "SCItemLimit":
item_limit = int(element.text)
elif element.tag == "Menu":
subcat = self._parse_menu_tag(element)
if subcat:
subcategories.append(subcat)
else:
LOG.warn("UNHANDLED tag in _parse_menu_tag: %s" % element.tag)
if untranslated_name and query:
return Category(untranslated_name, name, icon, query,
only_unallocated, dont_display, flags, subcategories,
sortmode, item_limit)
else:
LOG.warn("UNHANDLED entry: %s %s %s %s" % (name,
untranslated_name,
icon,
query))
return None
def _parse_menu_tag(self, item):
name = None
untranslated_name = None
query = None
icon = None
only_unallocated = False
dont_display = False
flags = []
subcategories = []
sortmode = SortMethods.BY_ALPHABET
item_limit = 0
for element in item.getchildren():
# ignore inline translations, we use gettext for this
if (element.tag == "Name" and
'{http://www.w3.org/XML/1998/namespace}lang' in
element.attrib):
continue
if element.tag == "Name":
untranslated_name = element.text
# gettext/xml writes stuff from software-center.menu
# out into the pot as escaped xml, so we need to escape
# the name first, get the translation and unscape it again
escaped_name = xml_escape(untranslated_name)
name = xml_unescape(gettext.gettext(escaped_name))
elif element.tag == "SCIcon":
icon = element.text
elif element.tag == 'Flags':
flags = self._parse_flags_tag(element)
elif element.tag == "Directory":
l = self._parse_directory_tag(element)
if l:
(untranslated_name, name, gettext_domain, icon) = l
elif element.tag == "Include":
query = self._parse_include_tag(element)
elif element.tag == "OnlyUnallocated":
only_unallocated = True
elif element.tag == "SCDontDisplay":
dont_display = True
elif element.tag == "SCSortMode":
sortmode = int(element.text)
if not self._verify_supported_sort_mode(sortmode):
return None
elif element.tag == "SCItemLimit":
item_limit = int(element.text)
elif element.tag == "Menu":
subcat = self._parse_menu_tag(element)
if subcat:
subcategories.append(subcat)
else:
LOG.warn("UNHANDLED tag in _parse_menu_tag: %s" % element.tag)
if untranslated_name and query:
return Category(untranslated_name, name, icon, query,
only_unallocated, dont_display, flags, subcategories,
sortmode, item_limit)
else:
LOG.warn("UNHANDLED entry: %s %s %s %s" % (name,
untranslated_name,
icon,
query))
return None
def hauptmenu(self,output):
self.loadinginprogress = False
trans = { 'ß' : 'ß' , 'ä' : 'ä' , 'ö' : 'ö' , 'ü' : 'ü' , 'Ä' : 'Ä', 'Ö' : 'Ö' , 'Ü' : 'Ü'}
output= util.unescape(output,trans)
if self.land == "de":
startpos = output.find('<div id="navigation">')
endpos = output.find('<li><a class="section-link" title="Unwetterwarnungen Europa"', startpos)
bereich = output[startpos:endpos]
a = findall(r'href=(?P<text>.*?)</a>',bereich)
for x in a:
x = x.replace('">',"#").replace('"',"").split('#')
if not len(x) > 1:
break
if x[0] == "index.html":
continue
name = x[1]
link = self.baseurl + x[0]
self.menueintrag.append(name)
self.link.append(link)
else:
self.menueintrag.append("Lagebericht")
self.link.append(self.weatherreporturl)
startpos = output.find('</ul><ul><ul id="level_3">')
endpos = output.find('</ul></ul>', startpos)
bereich = output[startpos:endpos]
a = findall(r'href=(?P<text>.*?)</a>',bereich)
for x in a:
x = x.replace('">',"#").replace('"',"").split('#')
if not len(x) > 1:
break
if x[0] == "index.html":
continue
name = x[1]
link = self.baseurl + x[0]
self.menueintrag.append(name)
self.link.append(link)
self["statuslabel"].setText("")
self["hmenu"].l.setList(self.menueintrag)
self["hmenu"].instance.moveSelectionTo(0)
self.showThumbLand()
def addTimerByEventID(self, param):
print "[WebComponents.Timer] addTimerByEventID", param
if param['sRef'] is None:
return ( False, _("Missing Parameter: sRef") )
if param['eventid'] is None:
return ( False, _("Missing Parameter: eventid") )
justplay = False
if param['justplay'] is not None:
if param['justplay'] == "1":
justplay = True
if not justplay and not config.misc.recording_allowed.value:
return (False, _("Recording is currently disabled!"))
location = preferredTimerPath()
if 'dirname' in param and param['dirname']:
location = param['dirname']
tags = []
if 'tags' in param and param['tags']:
tags = unescape(param['tags']).split(' ')
epgcache = eEPGCache.getInstance()
event = epgcache.lookupEventId(eServiceReference(param['sRef']), int(param['eventid']))
if event is None:
return ( False, _("EventId not found") )
(begin, end, name, description, eit) = parseEvent(event)
timer = RecordTimerEntry(ServiceReference(param['sRef']), begin , end, name, description, eit, False, justplay, AFTEREVENT.AUTO, dirname=location, tags=tags)
conflicts = self.recordtimer.record(timer)
if conflicts is None:
return ( True, _("Timer '%s' added") %(timer.name) )
else:
print "[WebComponents.Timer] editTimer conflicting Timers: %s" %(conflicts)
msg = ""
for timer in conflicts:
msg = "%s / %s" %(msg, timer.name)
return (False, _("Conflicting Timer(s) detected! %s") %(msg))