Skip to content

Commit c3347a4

Browse files
committed
Get some sort of serializer working for elementtree.
--HG-- extra : convert_revision : svn%3Aacbfec75-9323-0410-a652-858a13e371e0/trunk%40391
1 parent de17d27 commit c3347a4

File tree

1 file changed

+29
-4
lines changed

1 file changed

+29
-4
lines changed

src/treebuilders/etree.py

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ def cloneNode(self):
7272
return element
7373

7474
class Comment(Element):
75-
7675
def __init__(self, data):
7776
self._element = ElementTree.Comment(data)
7877
self.name = None
@@ -87,20 +86,46 @@ def _setData(self, value):
8786
data = property(_getData, _setData)
8887

8988
class DocumentType(Element):
90-
pass
89+
def __init__(self, name):
90+
self._element = ElementTree.Element(DocumentType)
91+
self.text = "html"
9192

9293
class Document(Element):
9394
def __init__(self):
9495
Element.__init__(self, "")
9596

97+
def testSerializer(element):
98+
print type(ElementTree.Comment)
99+
rv = []
100+
rv.append("#document")
101+
def serializeElement(element, indent=0):
102+
if element.tag is DocumentType:
103+
rv.append("|%s<!DOCTYPE %s>"%(' '*indent, element.text))
104+
elif element.tag is ElementTree.Comment:
105+
rv.append("|%s<!-- %s -->"%(' '*indent, element.text))
106+
else:
107+
rv.append("|%s<%s>"%(' '*indent, element.tag))
108+
if hasattr(element, "attrib"):
109+
for name, value in element.attrib.iteritems():
110+
rv.append('|%s%s="%s"' % (' '*(indent+2), name, value))
111+
if element.text:
112+
rv.append("|%s\"%s\"" %(' '*(indent+2), element.text))
113+
indent += 2
114+
for child in element.getchildren():
115+
serializeElement(child, indent)
116+
if element.tail:
117+
rv.append("|%s\"%s\"" %(' '*(indent-2), element.tail))
118+
serializeElement(element)
119+
return "\n".join(rv)
120+
96121
class TreeBuilder(base.TreeBuilder):
97122
documentClass = Document
98123
doctypeClass = DocumentType
99124
elementClass = Element
100125
commentClass = Comment
101126

102127
def testSerializer(self, element):
103-
ElementTree.tostring(element)
128+
return testSerializer(element)
104129

105130
def getDocument(self):
106-
return self.document.getchildren()[0]._element
131+
return self.document._element.getchildren()[0]

0 commit comments

Comments
 (0)