22
33import ast
44from xml .dom .minidom import Document
5+ from lxml import etree
56import types
67import sys
78
89class KDevelopNodeVisitor (ast .NodeVisitor ):
9- xmlrepr = Document ()
10- basenode = None
10+ basenode = etree .Element ("pythonast" )
1111 currentnode = None
1212 nodecnt = 0
1313 childNodeMap = {}
1414
1515 def __init__ (self , * arg , ** args ):
1616 super (KDevelopNodeVisitor , self ).__init__ (* arg , ** args )
17- self .basenode = self .xmlrepr .createElement ("pythonast" )
18- self .xmlrepr .appendChild (self .basenode )
1917 self .currentnode = self .basenode
2018
2119 def generic_visit (self , node ):
@@ -24,9 +22,9 @@ def generic_visit(self, node):
2422 #self.childNodeMap[self.nodecnt] = node
2523 self .childNodeMap [node ] = self .nodecnt
2624
27- node_xmlrepr = self . xmlrepr . createElement (node .__class__ .__name__ + "Ast" )
28- node_xmlrepr .setAttribute ('nodecnt' , str (self .nodecnt ))
29- self .currentnode .appendChild (node_xmlrepr )
25+ node_xmlrepr = etree . Element (node .__class__ .__name__ + "Ast" )
26+ node_xmlrepr .set ('nodecnt' , str (self .nodecnt ))
27+ self .currentnode .append (node_xmlrepr )
3028
3129 save_currentnode = self .currentnode
3230 self .currentnode = node_xmlrepr
@@ -39,7 +37,7 @@ def generic_visit(self, node):
3937 value = getattr (node , field )
4038 if type (value ) not in [types .IntType , types .StringType , types .FloatType , types .BooleanType ]:
4139 continue
42- node_xmlrepr .setAttribute (field .lower (), str (value ))
40+ node_xmlrepr .set (field .lower (), str (value ))
4341
4442 super (KDevelopNodeVisitor , self ).generic_visit (node )
4543
@@ -56,13 +54,13 @@ def generic_visit(self, node):
5654 sys .stderr .write ("Warning: missing key on node " + str (node ) + "\n " )
5755 multiple_keys .append ('' )
5856 key = ',' .join (multiple_keys )
59- node_xmlrepr .setAttribute ("NRLST_" + field .lower (), str (key ))
57+ node_xmlrepr .set ("NRLST_" + field .lower (), str (key ))
6058 else :
6159 try :
6260 key = self .childNodeMap [value ]
6361 except KeyError :
6462 key = ''
65- node_xmlrepr .setAttribute ("NR_" + field .lower (), str (key ))
63+ node_xmlrepr .set ("NR_" + field .lower (), str (key ))
6664
6765
6866 self .currentnode = save_currentnode
@@ -74,4 +72,4 @@ def generic_visit(self, node):
7472except Exception as e :
7573 sys .stderr .write (str (e .lineno ) + ':' + str (e .offset ))
7674else :
77- sys .stdout .write (v . xmlrepr . toprettyxml ( indent = " " ))
75+ sys .stdout .write (etree . tostring ( v . basenode , xml_declaration = True , pretty_print = True ))
0 commit comments