Проблема в этой строке:
xmlRoot.childNodes().at(i).insertAfter(teamNode, xmlRoot.childNodes().at(i))
Метод insertAfter
принимает два аргумента - новый узел и узел, который будет ссылкой для вставки нового узла. Но оба эти аргумента должны быть потомками общего родителя, для которого вызывается insertAfter
. Схематично ваш код похож на child->insertAfter(newChild, child)
, а должен быть parent->insertAfter(newChild, child)
. Вы можете посмотреть на код ниже:
for (int i = 0; i < xmlRoot.childNodes().count(); i++)
{
if (xmlRoot.childNodes().at(i).isElement())
{
if(xmlRoot.childNodes().at(i).toElement().attribute("id") == "teamSection")
{
auto teamNode = xmlRoot.childNodes().at(i).cloneNode(); //copy element
auto sibling = xmlRoot.childNodes().at(i);
if (xmlRoot.insertAfter(teamNode, sibling).isNull())
{
qDebug() << "not worked";
}
else
{
qDebug() << "worked";
}
break;
}
}
}