func:实现了排序功能。

This commit is contained in:
2024-05-18 01:26:52 +08:00
parent f9fd64d90f
commit 4976b5548e
10 changed files with 112 additions and 268 deletions

View File

@@ -52,6 +52,33 @@ bool CXmlOpr::parse_xml(std::vector<tinyxml2::XMLElement*>& vec)
return true;
}
// 排序后(仅指针排序)的节点进行复制(让实际内容有序),删除原始节点
void CXmlOpr::copy_and_del(std::vector<Element_t*>& vec, std::vector<Element_t*>& out)
{
out.clear();
// 先找到最后一个节点
Element_t* last_node = parent_node_->LastChildElement(opr_base_.the_node.c_str());
Element_t* last_node_bk = last_node;
if (last_node == nullptr) {
return;
}
for (const auto& data : vec) {
Element_t* n = copy_element(data);
out.push_back(n);
insert_brother_node(last_node, n);
last_node = n;
}
// 删除原有的节点
Element_t* fnode = parent_node_->FirstChildElement(opr_base_.the_node.c_str());
Element_t* fnext = fnode->NextSiblingElement();
while (fnode != last_node_bk) {
parent_node_->DeleteChild(fnode);
fnode = fnext;
fnext = fnode->NextSiblingElement();
}
parent_node_->DeleteChild(last_node_bk);
}
void CXmlOpr::insert_brother_node(Element_t* brother, Element_t* newer)
{
if (!brother || !newer) {