Changeset 1742
- Timestamp:
- 23/11/06 09:55:08 (14 years ago)
- Location:
- TI02-CSML/branches/CSML2
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
TI02-CSML/branches/CSML2/csParser.py
r1739 r1742 63 63 def toXML(self, csmlfrag): 64 64 #process self... and convert  to XML 65 if hasattr(self, 'CONTENT'): 66 if self.CONTENT is not None: csmlfrag.text=self.CONTENT 65 67 for item in self.__dict__: 66 68 if item in self.ATTRIBUTES: … … 71 73 if GML(item) in self.ATTRIBUTES: 72 74 csmlfrag.set(GML(item), self.__dict__[item]) 73 74 75 # self.CHILDREN (recursive - calls the toXML method of children 75 76 for att in self.__dict__: … … 78 79 if child == att: 79 80 #found a match. 80 if type(self.CHILDREN[child][0]) is list: 81 ename = self._getReverseSubsType(type(self.__dict__[att]).__name__) 82 else: 81 if type(self.CHILDREN[child][0]) is not list: 83 82 ename=self.CHILDREN[child][0]#Element Name 84 83 etype = self.CHILDREN[child][1] #Element Type 85 84 if type(self.__dict__[att]) is list: 86 85 for item in self.__dict__[att]: 86 ename = self._getReverseSubsType(type(item).__name__) 87 87 frag=ET.Element(ename) 88 if self.CONTENT is not None:89 frag.text=self.CONTENT90 88 item.toXML(frag) 91 89 csmlfrag.append(frag) 92 90 else: 93 91 frag=ET.Element(ename) 94 if self.CONTENT is not None:95 frag.text=self.CONTENT96 92 self.__dict__[att].toXML(frag) 97 93 csmlfrag.append(frag) 94 98 95 return csmlfrag 99 96 100 97 def fromXML(self,csmlfrag): 98 ######## output for testing purposes ############### 99 if hasattr(self, 'CHILDREN'): 100 print "ELEMENT %s"%csmlfrag.tag 101 for child in self.CHILDREN: 102 print child 103 ####################################### 101 104 # deal with attributes, e.g. gml id's 105 if csmlfrag.text is not None: 106 self.CONTENT = csmlfrag.text 102 107 for item in csmlfrag.items(): 103 108 if item[0] in self.ATTRIBUTES: … … 105 110 # self.CHILDREN (recursive - calls the fromXML method of children 106 111 for frag in csmlfrag[:]: 107 if frag.text is not None: 108 self.CONTENT = frag.text 112 print "ELEMENT %s"%csmlfrag.tag 109 113 for child in self.CHILDREN: 114 print child 110 115 ename = self.CHILDREN[child][0] #Element Name 111 116 if frag.tag == ename: … … 150 155 AbstractFeature.__init__(self,**kwargs) 151 156 self.CHILDREN=merge(self.CHILDREN,{'members':[[CSML('GridFeature'),CSML('PointFeature')], 'AbstractFeature']}) 152 #CHOICE mechanism used to declare that any element name can go here so long as it is of a type that 153 #inherits from AbstractFeature - .i.e. a GridFeature, a PointFeature etc. 157 158 #class TimePosition(AbstractGML): 159 #def __init__(self, **kwargs): 160 #AbstractGML.__init__(self,**kwargs) 161 #self.CHILDREN = {'':[CSML(''), '']} 162 163 class TimePosition(AbstractGML): 164 def __init__(self, **kwargs): 165 AbstractGML.__init__(self,**kwargs) 166 self.CHILDREN = {'':[CSML(''), '']} 167 168 class ReferenceableGridCoverage(AbstractGML): 169 def __init__(self, **kwargs): 170 AbstractGML.__init__(self,**kwargs) 171 self.CHILDREN = {'':[CSML(''), '']} 172 173 class Phenomenon(AbstractGML): 174 def __init__(self, **kwargs): 175 AbstractGML.__init__(self,**kwargs) 176 self.CHILDREN = {'':[CSML(''), '']} 154 177 155 178 class GridFeature(AbstractFeature, csElement): … … 157 180 AbstractFeature.__init__(self,**kwargs) 158 181 #dummy child for now: 159 self.CHILDREN=merge(self.CHILDREN,{'test':[CSML('TestElement'), 'csString']})160 #self.CHILDREN={'time':[GML('time'), GML('TimePosition')], 'value':[CSML('value'), 'ReferenceableGridCoverage'], 'parameter':[CSML('parameter'), SWE('Phenomenon')]}182 #self.CHILDREN=merge(self.CHILDREN,{'test':[CSML('TestElement'), 'csString']}) 183 self.CHILDREN={'time':[GML('time'), GML('TimePosition')], 'value':[CSML('value'), 'ReferenceableGridCoverage'], 'parameter':[CSML('parameter'), 'Phenomenon']} 161 184 162 185 class AbstractFileExtract(AbstractGML, csElement): … … 175 198 AbstractFeatureCollection.__init__(self,**kwargs) 176 199 200 177 201 def _getSubstitutionType(self,tag): 202 print tag 203 print 'returning..' 178 204 if tag==CSML('GridFeature'): 205 print 'GF' 179 206 return 'GridFeature' 180 207 elif tag==CSML('PointFeature'): 208 print 'PF' 181 209 return 'PointFeature' 182 else: return 'AbstractFeature' 210 else: 211 print 'AF' 212 return 'AbstractFeature' 183 213 184 214 def _getReverseSubsType(self, typename): 215 print 'REVERSE' 216 print typename 185 217 if typename== 'GridFeature': 186 218 return CSML('GridFeature') -
TI02-CSML/branches/CSML2/test.xml
r1739 r1742 14 14 <featureCollection> 15 15 <GridFeature gml:id="feature1"> 16 <TestElement>testblahtestbanana</TestElement>17 16 <time></time> 18 17 <value></value> 19 18 <parameter></parameter> 20 19 </GridFeature> 20 <GridFeature>more test blah</GridFeature> 21 21 </featureCollection> 22 22 </Dataset>
Note: See TracChangeset
for help on using the changeset viewer.