Use lxml in xmlgenerator

Return code from fork.
lxml is faster and allowed in global requirements.

Change-Id: Ibeb3b2c92064ce87d6acf491f79342ba2a3de507
This commit is contained in:
Alexey Stepanov 2017-03-22 17:44:53 +03:00 committed by Alexey Stepanov
parent 6514c6d046
commit 2f200cc211
2 changed files with 12 additions and 5 deletions

View File

@ -13,8 +13,8 @@
# under the License.
from xml.dom import minidom
# noinspection PyPep8Naming
from xml.etree import ElementTree as ET
from lxml import etree # nosec # We are authors of this XML
import six
@ -22,7 +22,9 @@ import six
class XMLGeneratorElement(object):
def __init__(self, name, parent, builder):
self.elem = ET.SubElement(parent, name)
# pylint: disable=no-member
self.elem = etree.SubElement(parent, name)
# pylint: enable=no-member
self.parent = parent
self.builder = builder
self.prev_elem = None
@ -57,7 +59,9 @@ class XMLGeneratorElement(object):
class XMLGenerator(object):
def __init__(self, root_name, **kwargs):
self.root = ET.Element(root_name)
# pylint: disable=no-member
self.root = etree.Element(root_name)
# pylint: enable=no-member
kwargs = {k: str(v) for k, v in kwargs.items()}
self.root.attrib.update(kwargs)
self.curr_el = self.root
@ -69,7 +73,9 @@ class XMLGenerator(object):
builder=self)
def __str__(self):
rough_string = ET.tostring(self.root, encoding='utf-8')
# pylint: disable=no-member
rough_string = etree.tostring(self.root, encoding='utf-8')
# pylint: enable=no-member
reparsed = minidom.parseString(rough_string)
s = reparsed.toprettyxml(indent=' ', encoding='utf-8')
if six.PY2:

View File

@ -50,6 +50,7 @@ setuptools.setup(
'tabulate',
'six>=1.9.0',
'python-dateutil>=2.4.2',
'lxml',
'enum34' if sys.version_info.major == 2 else ''
],
tests_require=[