|
4 | 4 | import re |
5 | 5 | import string |
6 | 6 | import sys |
| 7 | +import xml.dom.core |
| 8 | +import xml.dom.esis_builder |
7 | 9 |
|
8 | 10 |
|
9 | 11 | _data_rx = re.compile(r"[^\\][^\\]*") |
@@ -37,14 +39,12 @@ def encode(s): |
37 | 39 | return string.join(map(_charmap.get, s), '') |
38 | 40 |
|
39 | 41 |
|
40 | | -import xml.dom.esis_builder |
41 | | - |
42 | | - |
43 | 42 | class ExtendedEsisBuilder(xml.dom.esis_builder.EsisBuilder): |
44 | 43 | def __init__(self, *args, **kw): |
45 | 44 | self.__empties = {} |
46 | 45 | self.__is_empty = 0 |
47 | 46 | apply(xml.dom.esis_builder.EsisBuilder.__init__, (self,) + args, kw) |
| 47 | + self.fragment = self.document.createDocumentFragment() |
48 | 48 |
|
49 | 49 | def feed(self, data): |
50 | 50 | for line in string.split(data, '\n'): |
@@ -76,5 +76,19 @@ def feed(self, data): |
76 | 76 | else: |
77 | 77 | sys.stderr.write('Unknown event: %s\n' % line) |
78 | 78 |
|
| 79 | + def push(self, node): |
| 80 | + "Add node to current node and move to new node." |
| 81 | + |
| 82 | + nodetype = node.get_nodeType() |
| 83 | + if self.current_element: |
| 84 | + self.current_element.insertBefore(node, None) |
| 85 | + elif nodetype == xml.dom.core.TEXT_NODE: |
| 86 | + if string.strip(node.get_nodeValue()): |
| 87 | + self.fragment.appendChild(node) |
| 88 | + else: |
| 89 | + self.fragment.appendChild(node) |
| 90 | + if nodetype == xml.dom.core.ELEMENT_NODE: |
| 91 | + self.current_element = node |
| 92 | + |
79 | 93 | def get_empties(self): |
80 | 94 | return self.__empties.keys() |
0 commit comments