8000 Make etree work · awesome-python/html5lib-python@7f9f651 · GitHub
[go: up one dir, main page]

Skip to content

Commit 7f9f651

Browse files
committed
Make etree work
--HG-- branch : svgmathml extra : convert_revision : svn%3Aacbfec75-9323-0410-a652-858a13e371e0/branches/svgmathml%401299
1 parent 8edc330 commit 7f9f651

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

src/html5lib/treebuilders/etree.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import _base
55
from html5lib import ihatexml
6+
from html5lib import constants
67

78
tag_regexp = re.compile("{([^}]*)}(.*)")
89

@@ -214,15 +215,24 @@ def serializeElement(element, indent=0):
214215
elif type(element.tag) == type(ElementTree.Comment):
215216
rv.append("|%s<!-- %s -->"%(' '*indent, element.text))
216217
else:
217-
if element.namespace == self.defaultNamespace:
218+
nsmatch = tag_regexp.match(element.tag)
219+
220+
if nsmatch is None:
218221
name = element.tag
219222
else:
220-
ns, name = element.tag.split("}")
221-
ns = ns[1:]
222-
name = "%s %s"%(ns, name)
223-
rv.append("|%s<%s>"%(' '*indent, element.tag))
223+
ns, name = nsmatch.groups()
224+
prefix = constants.prefixes[ns]
225+
if prefix != "html":
226+
name = "%s %s"%(prefix, name)
227+
rv.append("|%s<%s>"%(' '*indent, name))
228+
224229
if hasattr(element, "attrib"):
225230
for name, value in element.attrib.iteritems():
231+
nsmatch = tag_regexp.match(name)
232+
if nsmatch is not None:
233+
ns, name = nsmatch.groups()
234+
prefix = constants.prefixes[ns]
235+
name = "%s %s"%(prefix, name)
226236
rv.append('|%s%s="%s"' % (' '*(indent+2), name, value))
227237
if element.text:
228238
rv.append("|%s\"%s\"" %(' '*(indent+2), element.text))

tests/test_parser.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,21 @@
1818
#"supposed" to work
1919
try:
2020
import xml.etree.ElementTree as ElementTree
21-
#treeTypes['ElementTree'] = treebuilders.getTreeBuilder("etree", ElementTree, fullTree=True)
21+
treeTypes['ElementTree'] = treebuilders.getTreeBuilder("etree", ElementTree, fullTree=True)
2222
except ImportError:
2323
try:
2424
import elementtree.ElementTree as ElementTree
25-
#treeTypes['ElementTree'] = treebuilders.getTreeBuilder("etree", ElementTree, fullTree=True)
25+
treeTypes['ElementTree'] = treebuilders.getTreeBuilder("etree", ElementTree, fullTree=True)
2626
except ImportError:
2727
pass
2828

2929
try:
3030
import xml.etree.cElementTree as cElementTree
31-
#treeTypes['cElementTree'] = treebuilders.getTreeBuilder("etree", cElementTree, fullTree=True)
31+
treeTypes['cElementTree'] = treebuilders.getTreeBuilder("etree", cElementTree, fullTree=True)
3232
except ImportError:
3333
try:
3434
import cElementTree
35-
#treeTypes['cElementTree'] = treebuilders.getTreeBuilder("etree", cElementTree, fullTree=True)
35+
treeTypes['cElementTree'] = treebuilders.getTreeBuilder("etree", cElementTree, fullTree=True)
3636
except ImportError:
3737
pass
3838

0 commit comments

Comments
 (0)
0