authentik.lib.xml
XML Utilities
1"""XML Utilities""" 2 3from lxml.etree import XMLParser, _Element, fromstring, tostring # nosec 4 5 6def get_lxml_parser(): 7 """Get XML parser""" 8 return XMLParser(resolve_entities=False) 9 10 11def lxml_from_string(text: str): 12 """Wrapper around fromstring""" 13 return fromstring(text, parser=get_lxml_parser()) # nosec 14 15 16def remove_xml_newlines(parent: _Element, element: _Element): 17 """Remove newlines in a given XML element, required for xmlsec 18 19 https://github.com/xmlsec/python-xmlsec/issues/196""" 20 old_element = element 21 new_node = fromstring(tostring(element, encoding=str).replace("\n", "")) 22 parent.replace(old_element, new_node) 23 return new_node
def
get_lxml_parser():
Get XML parser
def
lxml_from_string(text: str):
12def lxml_from_string(text: str): 13 """Wrapper around fromstring""" 14 return fromstring(text, parser=get_lxml_parser()) # nosec
Wrapper around fromstring
def
remove_xml_newlines(parent: lxml.etree._Element, element: lxml.etree._Element):
17def remove_xml_newlines(parent: _Element, element: _Element): 18 """Remove newlines in a given XML element, required for xmlsec 19 20 https://github.com/xmlsec/python-xmlsec/issues/196""" 21 old_element = element 22 new_node = fromstring(tostring(element, encoding=str).replace("\n", "")) 23 parent.replace(old_element, new_node) 24 return new_node
Remove newlines in a given XML element, required for xmlsec