func:导入功能初步完成(没有检查重复)

This commit is contained in:
taynpg 2024-05-19 21:02:50 +08:00
parent 00b15c46b8
commit 6d13738078
4 changed files with 11 additions and 10 deletions

View File

@ -381,7 +381,7 @@ bool MainWidget::edit_property(Element_t* target, int row)
}
Property_t property;
xml_.get_key_value(target, property);
xml_.get_attributes(target, property);
// 检测key值是否变化
std::string value_pre = property[0].value;
@ -403,7 +403,7 @@ bool MainWidget::edit_property(Element_t* target, int row)
}
}
}
xml_.key_value_to_element(target, property);
xml_.attributes_to_element(target, property);
// 这里要同步到界面
ele_update_gui(target, row);

View File

@ -57,7 +57,7 @@ void CDataEdit::import_data()
if (item.trimmed().isEmpty()) {
continue;
}
if (xml_opr_->check_same_struct(item.toStdString())) {
if (!xml_opr_->check_same_struct(item.toStdString())) {
CUtil::msg(this, u8"不是合法的xml语句或者与现有结构不一致。");
return;
}
@ -71,6 +71,7 @@ void CDataEdit::import_data()
}
QString info = QString(u8"需要导入 %1 条数据,成功导入 %2 条。").arg(task_count).arg(success_count);
CUtil::msg(this, info);
close();
}
void CDataEdit::showEvent(QShowEvent* event)

View File

@ -131,7 +131,7 @@ bool CXmlOpr::check_same_struct(const std::string& data)
while (attribute) {
++own_cnt;
if (import_ele->FindAttribute(attribute->Name()) == nullptr) {
return true;
return false;
}
attribute = attribute->Next();
}
@ -152,7 +152,7 @@ bool CXmlOpr::check_same_struct(const std::string& data)
// Warning: 不检查 xml 格式合法性,请自行调用 check_valid_xml_data
// 且导入前每条数据请自行使用 check_same_struct 检测。
bool CXmlOpr::import_newer_data(const std::vector<std::string>& vec, std::size_t success_count)
bool CXmlOpr::import_newer_data(const std::vector<std::string>& vec, std::size_t& success_count)
{
success_count = 0;
auto* last_item = parent_node_->LastChildElement(opr_base_.the_node.c_str());
@ -203,7 +203,7 @@ bool CXmlOpr::save()
return true;
}
void CXmlOpr::get_key_value(Element_t* ele, Property_t& vec)
void CXmlOpr::get_attributes(Element_t* ele, Property_t& vec)
{
if (ele == nullptr) {
return;
@ -216,7 +216,7 @@ void CXmlOpr::get_key_value(Element_t* ele, Property_t& vec)
}
}
void CXmlOpr::key_value_to_element(Element_t* ele, const Property_t& vec)
void CXmlOpr::attributes_to_element(Element_t* ele, const Property_t& vec)
{
if (ele == nullptr) {
return;

View File

@ -37,11 +37,11 @@ public:
// 不检查 xml 格式合法性,请自行调用 check_valid_xml_data
bool check_same_struct(const std::string& data);
// 不检查 xml 格式合法性,请自行调用 check_valid_xml_data
bool import_newer_data(const std::vector<std::string>& vec, std::size_t success_count);
bool import_newer_data(const std::vector<std::string>& vec, std::size_t& success_count);
public:
void get_key_value(Element_t* ele, Property_t& vec);
void key_value_to_element(Element_t* ele, const Property_t& vec);
void get_attributes(Element_t* ele, Property_t& vec);
void attributes_to_element(Element_t* ele, const Property_t& vec);
private:
tinyxml2::XMLDocument doc_{};