def append_data_records_quality(self, record_index, audit_result: dict): """ 设置数据的每一个记录的质量信息 :param record_index: :param audit_result: :return: """ temp_node = CXml.node_xpath_one( self.__node_data_records, './{0}[@index="{1}"]'.format(self.Name_Record, record_index)) if temp_node is None: temp_node = CXml.create_element(self.__node_data_records, self.Name_Record) self.__append_quality_info(temp_node, audit_result)
def txt_to_xml(self, file_metadata_name_with_path: str): """ 完成 王学谦 txt文件转xml,在函数外提前定义xml对象并获取父节点传入,函数会将通过父节点构造xml对象 by王学谦 :param file_metadata_name_with_path:查询的mat文件全名,带路径 :return xml_obj:将文件内容存储好的项目对象 """ text_list = CFile.file_2_list(file_metadata_name_with_path) # 获取mat文件作为列表 if (text_list is None) or len(text_list) == 0: raise Exception('元数据文件无法读取,请检查') # 如果获取的文件内容为空,则抛出异常 xml_obj = CXml() # 建立xml对象 node_root = xml_obj.new_xml('root') xml_obj.set_attr(node_root, self.Name_Type, self.Transformer_TXT) # 设置root节点与属性 # 设置操作的节点 current_node = node_root for row_text in text_list: if CUtils.equal_ignore_case('row_text', 'END'): break # 分割字符 row_list = re.split(r'=', row_text.strip()) if len(row_list) >= 2: # 为GROUP建立新节点 if CUtils.equal_ignore_case(row_list[0], 'GROUP'): node_item = xml_obj.create_element(current_node, 'item') # 值设为属性 item_value = CUtils.any_2_str(row_list[1].strip()) if item_value.startswith('"') and item_value.endswith('"'): item_value = item_value[1:-1] xml_obj.set_attr(node_item, self.Name_Name, item_value) current_node = node_item elif CUtils.equal_ignore_case(row_list[0], 'END_GROUP'): current_node = xml_obj.node_xpath_one(current_node, '..') else: node_item = xml_obj.create_element(current_node, 'item') xml_obj.set_attr(node_item, self.Name_Name, row_list[0].strip()) item_value = CUtils.any_2_str(row_list[1].strip()) if item_value.startswith('"') and item_value.endswith('"'): item_value = item_value[1:-1] xml_obj.set_element_text(node_item, item_value) return xml_obj
def __append_quality_info(self, xml_node, audit_result: dict): quality_id = CUtils.dict_value_by_name(audit_result, self.Name_ID, '') quality_title = CUtils.dict_value_by_name(audit_result, self.Name_Title, '') quality_group = CUtils.dict_value_by_name(audit_result, self.Name_Group, self.QA_Group_Data_Integrity) quality_result = CUtils.dict_value_by_name(audit_result, self.Name_Result, self.QA_Result_Pass) quality_memo = CUtils.dict_value_by_name(audit_result, self.Name_Message, '') temp_node = CXml.node_xpath_one( xml_node, './{0}[@id="{1}"]'.format(self.Name_Item, quality_id)) if temp_node is not None: CXml.remove(temp_node) temp_node = CXml.create_element(xml_node, self.Name_Item) CXml.set_attr(temp_node, self.Name_ID, quality_id) CXml.set_attr(temp_node, self.Name_Group, quality_group) CXml.set_attr(temp_node, self.Name_Title, quality_title) CXml.set_attr(temp_node, self.Name_Result, quality_result) CXml.set_element_text(temp_node, quality_memo)