@@ -51,10 +51,8 @@ def startElementNS(self, name, tagName , attrs):
5151 node .setAttributeNode (attr )
5252
5353 parent = self .curNode
54+ parent .appendChild (node )
5455 node .parentNode = parent
55- if parent .childNodes :
56- node .previousSibling = parent .childNodes [- 1 ]
57- node .previousSibling .nextSibling = node
5856 self .curNode = node
5957
6058 self .lastEvent [1 ] = [(START_ELEMENT , node ), None ]
@@ -68,44 +66,63 @@ def endElementNS(self, name, tagName):
6866 #self.events.append((END_ELEMENT, node))
6967 self .curNode = node .parentNode
7068
69+ def startElement (self , name , attrs ):
70+ node = self .document .createElement (name )
71+
72+ for aname ,value in attrs .items ():
73+ attr = self .document .createAttribute (aname )
74+ attr .value = value
75+ node .setAttributeNode (attr )
76+
77+ parent = self .curNode
78+ parent .appendChild (node )
79+ node .parentNode = parent
80+ self .curNode = node
81+
82+ self .lastEvent [1 ] = [(START_ELEMENT , node ), None ]
83+ self .lastEvent = self .lastEvent [1 ]
84+ #self.events.append((START_ELEMENT, node))
85+
86+ def endElement (self , name ):
87+ node = self .curNode
88+ self .lastEvent [1 ] = [(END_ELEMENT , node ), None ]
89+ self .lastEvent = self .lastEvent [1 ]
90+ #self.events.append((END_ELEMENT, node))
91+ self .curNode = node .parentNode
92+
7193 def comment (self , s ):
7294 node = self .document .createComment (s )
7395 parent = self .curNode
96+ parent .appendChild (node )
7497 node .parentNode = parent
75- if parent .childNodes :
76- node .previousSibling = parent .childNodes [- 1 ]
77- node .previousSibling .nextSibling = node
7898 self .lastEvent [1 ] = [(COMMENT , node ), None ]
7999 self .lastEvent = self .lastEvent [1 ]
80100 #self.events.append((COMMENT, node))
81101
82102 def processingInstruction (self , target , data ):
83103 node = self .document .createProcessingInstruction (target , data )
84- #self.appendChild(node)
85104
86105 parent = self .curNode
106+ parent .appendChild (node )
87107 node .parentNode = parent
88- if parent .childNodes :
89- node .previousSibling = parent .childNodes [- 1 ]
90- node .previousSibling .nextSibling = node
91108 self .lastEvent [1 ] = [(PROCESSING_INSTRUCTION , node ), None ]
92109 self .lastEvent = self .lastEvent [1 ]
93110 #self.events.append((PROCESSING_INSTRUCTION, node))
94111
95112 def ignorableWhitespace (self , chars ):
96113 node = self .document .createTextNode (chars [start :start + length ])
97114 parent = self .curNode
115+ parent .appendChild (node )
98116 node .parentNode = parent
99- if parent .childNodes :
100- node .previousSibling = parent .childNodes [- 1 ]
101- node .previousSibling .nextSibling = node
102117 self .lastEvent [1 ] = [(IGNORABLE_WHITESPACE , node ), None ]
103118 self .lastEvent = self .lastEvent [1 ]
104119 #self.events.append((IGNORABLE_WHITESPACE, node))
105120
106121 def characters (self , chars ):
107122 node = self .document .createTextNode (chars )
108- node .parentNode = self .curNode
123+ parent = self .curNode
124+ parent .appendChild (node )
125+ node .parentNode = parent
109126 self .lastEvent [1 ] = [(CHARACTERS , node ), None ]
110127 self .lastEvent = self .lastEvent [1 ]
111128
@@ -160,8 +177,6 @@ def expandNode(self, node):
160177 token , cur_node = event
161178 if cur_node is node :
162179 return
163- if token != END_ELEMENT :
164- cur_node .parentNode .appendChild (cur_node )
165180 event = self .getEvent ()
166181
167182 def getEvent (self ):
0 commit comments