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():
7def get_lxml_parser():
8    """Get XML parser"""
9    return XMLParser(resolve_entities=False)

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

https://github.com/xmlsec/python-xmlsec/issues/196