コード例 #1
0
 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)
コード例 #2
0
    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
コード例 #3
0
    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)