da56a973d55d8f8fa4510ed8d3c2a035c5526330
[django-cas-provider.git] / cas_provider / xml.py
1 # Import etree from anywhere
2 try:
3     # lxml http://codespeak.net/lxml/
4     from lxml import etree
5     
6     # Define register_namespace function and ElementRoot for proper serialization
7     NSMAP = {}
8     def register_namespace(prefix, uri):
9         NSMAP[prefix] = uri
10     
11     def ElementRoot(*args, **kwargs):
12         kwargs['nsmap'] = NSMAP
13         return etree.Element(*args, **kwargs)
14
15 except ImportError:
16     try:
17         # Python 2.5
18         import xml.etree.cElementTree as etree
19     except ImportError:
20         try:
21             # Python 2.5
22             import xml.etree.ElementTree as etree
23         except ImportError:
24             try:
25                 # normal cElementTree install
26                 import cElementTree as etree
27             except ImportError:
28                 # normal ElementTree install
29                 import elementtree.ElementTree as etree
30
31     try:
32         register_namespace = ET.register_namespace
33     except AttributeError:
34         def register_namespace(prefix, uri):
35             ET._namespace_map[uri] = prefix
36
37     def ElementRoot(*args, **kwargs):
38         return etree.Element(*args, **kwargs)
39
40 __all__ = ('etree', 'register_namespace', 'ElementRoot')