Exemplo n.º 1
0
 def getXML(self, blockette, pos=0):
     """
     """
     if self.ignore:
         # debug
         if blockette.debug:
             print('  %s: ignored')
         return []
     try:
         result = getattr(blockette, self.attribute_name)
     except:
         if blockette.strict:
             msg = "Missing attribute %s in Blockette %s"
             raise Exception(msg % (self.name, blockette))
         result = self.default
     # watch for multiple entries
     if isinstance(result, list):
         result = result[pos]
     # optional if empty
     if self.optional:
         try:
             result = result.strip()
         except:
             pass
         if not result:
             # debug
             if blockette.debug:
                 print('  %s: skipped because optional')
             return []
     # reformat float
     if isinstance(self, Float):
         result = self.write(result)
     # Converts to XPath if necessary.
     if self.xpath:
         result = setXPath(self.xpath, result)
     # create XML element
     node = Element(self.field_name)
     if isinstance(result, bytes):
         node.text = result.decode().strip()
     else:
         node.text = str(result).strip()
     # debug
     if blockette.debug:
         print('  %s: %s' % (self, [node]))
     return [node]
Exemplo n.º 2
0
 def getXML(self, blockette, pos=0):
     """
     """
     if self.ignore:
         # debug
         if blockette.debug:
             print('  %s: ignored')
         return []
     try:
         result = getattr(blockette, self.attribute_name)
     except:
         if blockette.strict:
             msg = "Missing attribute %s in Blockette %s"
             raise Exception(msg % (self.name, blockette))
         result = self.default
     # watch for multiple entries
     if isinstance(result, list):
         result = result[pos]
     # optional if empty
     if self.optional:
         try:
             result = result.strip()
         except:
             pass
         if not result:
             # debug
             if blockette.debug:
                 print('  %s: skipped because optional')
             return []
     # reformat float
     if isinstance(self, Float):
         result = self.write(result)
     # Converts to XPath if necessary.
     if self.xpath:
         result = setXPath(self.xpath, result)
     # create XML element
     node = Element(self.field_name)
     if isinstance(result, bytes):
         node.text = result.decode().strip()
     else:
         node.text = str(result).strip()
     # debug
     if blockette.debug:
         print('  %s: %s' % (self, [node]))
     return [node]
Exemplo n.º 3
0
 def getXML(self, xseed_version, *args, **kwargs):
     """
     Write XML.
     """
     if xseed_version == '1.0':
         msg = 'The xsd-validation file for XML-SEED version 1.0 does ' + \
               'not support Blockette 60. It will be written but ' + \
               'please be aware that the file cannot be validated.\n' + \
               'If you want to validate your file please use XSEED ' + \
               'version 1.1.\n'
         sys.stdout.write(msg)
     node = Element('response_reference', blockette="060")
     SubElement(node, 'number_of_stages').text = str(len(self.stages))
     # Loop over stages.
     for _i in xrange(len(self.stages)):
         inner_stage = SubElement(node, 'stage')
         SubElement(inner_stage, 'stage_sequence_number').text = str(_i + 1)
         SubElement(inner_stage, 'number_of_responses').text = \
                                                 str(len(self.stages[_i]))
         for _j in xrange(len(self.stages[_i])):
             SubElement(inner_stage, 'response_lookup_key').text = \
                         setXPath('dictionary', self.stages[_i][_j])
     return node
Exemplo n.º 4
0
 def getXML(self, xseed_version, *args, **kwargs):  # @UnusedVariable
     """
     Write XML.
     """
     if xseed_version == '1.0':
         msg = 'The xsd-validation file for XML-SEED version 1.0 does ' + \
               'not support Blockette 60. It will be written but ' + \
               'please be aware that the file cannot be validated.\n' + \
               'If you want to validate your file please use XSEED ' + \
               'version 1.1.\n'
         sys.stdout.write(msg)
     node = Element('response_reference', blockette="060")
     SubElement(node, 'number_of_stages').text = str(len(self.stages))
     # Loop over stages.
     for _i in range(len(self.stages)):
         inner_stage = SubElement(node, 'stage')
         SubElement(inner_stage, 'stage_sequence_number').text = str(_i + 1)
         SubElement(inner_stage, 'number_of_responses').text = \
             str(len(self.stages[_i]))
         for _j in range(len(self.stages[_i])):
             SubElement(inner_stage, 'response_lookup_key').text = \
                 setXPath('dictionary', self.stages[_i][_j])
     return node