Changeset 2684 for TI02-CSML


Ignore:
Timestamp:
02/07/07 15:49:30 (12 years ago)
Author:
domlowe
Message:

tweaks to speed up parsing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI02-CSML/trunk/csml/parser.py

    r2683 r2684  
    5656    ''' merges (adds) dictionary to existing self.CHILDREN dictionary ''' 
    5757    dict1 = dict 
    58     if hasattr(obj, 'CHILDREN'): 
     58    if 'CHILDREN' in obj.__dict__: 
    5959      dict2=obj.CHILDREN 
    6060    else: 
     
    7070def addatts(obj, atts): 
    7171  ''' merges self.ATTRIBUTES  of inherited classes''' 
    72   if hasattr(obj, 'ATTRIBUTES'): 
     72  if 'ATTRIBUTES' in obj.__dict__: 
    7373    for att in atts: 
    7474        obj.ATTRIBUTES.append(att) 
     
    8181def addelems(obj, elems): 
    8282  ''' merges self.elems of inherited classes''' 
    83   if hasattr(obj, 'ELEMORDER'): 
     83  if 'ELEMORDER' in obj.__dict__: 
    8484    for elem in elems: 
    8585        obj.ELEMORDER.append(elem) 
     
    9090#Some variable definitions: these things are often repeated so store in variables. 
    9191FILEFORMATS=[CSML('NetCDFExtract'),CSML('NASAAmesExtract'), CSML('GRIBExtract'),CSML('CDMLExtract'), CSML('RawFileExtract'), CSML('ImageFileExtract'), CSML('AggregatedArray')] 
    92  
    9392 
    9493class csElement(object): 
     
    112111         
    113112    def __setattr__(self, name, value): 
    114         if hasattr(self, CSML(name)): 
     113        if CSML(name) in self.__dict__: 
    115114            object.__setattr__(self, CSML(name), value) 
    116115            object.__setattr__(self, name, value) 
    117         elif hasattr(self,GML(name)): 
     116        elif GML(name) in self.__dict__:        
    118117            object.__setattr__(self, GML(name), value) 
    119118            object.__setattr__(self, name, value) 
    120         elif hasattr(self,XLINK(name)): 
     119        elif XLINK(name) in self.__dict__:        
    121120            object.__setattr__(self, XLINK(name), value) 
    122             object.__setattr__(self, name, value) 
     121            object.__setattr__(self, name, value)  
    123122        else: 
    124             if hasattr(self, 'ATTRIBUTES'): 
     123            if 'ATTRIBUTES' in self.__dict__: 
    125124                if CSML(name) in self.__dict__['ATTRIBUTES']: 
    126125                    object.__setattr__(self, CSML(name), value) 
     
    173172    def addChildElem(self, childname, childobj): 
    174173        #sometimes you want to add a child element but don't know if there is one already. In which case you want to create a list of child objects. 
    175         if hasattr(self, childname): 
     174        if childname in self.__dict__: 
    176175            currentattribute=getattr(self,childname) 
    177176            if type(getattr(self,childname)) is list: 
     
    186185    def toXML(self, csmlfrag, **kwargs): 
    187186        #process self and convert to XML       
    188         if hasattr(self, 'CONTENT'): 
     187        if 'CONTENT' in self.__dict__: 
    189188            if self.CONTENT is not None: csmlfrag.text=self.CONTENT 
    190         if hasattr(self, 'ATTRIBUTES'): 
     189        if 'ATTRIBUTES' in self.__dict__: 
    191190            for item in self.__dict__: 
    192191                if item in self.ATTRIBUTES:                     
     
    277276                                    childobj.fromXML(frag) 
    278277                                #set this object to be an attribute of the 'parent' (self) object 
    279                                 if hasattr(self, child): 
     278                                if child in self.__dict__: 
    280279                                    if type(self.__dict__[child]) is not list: 
    281280                                        tmp=self.__dict__[child] 
     
    300299                             
    301300                        #set this object to be an attribute of the 'parent' (self) object 
    302                         if hasattr(self, child): 
     301                        if child in self.__dict__: 
    303302                            if type(self.__dict__[child]) is not list: 
    304303                                tmp=self.__dict__[child] 
Note: See TracChangeset for help on using the changeset viewer.