Мне не разрешили создать новый тег 'tinyxml2', поэтому я использую тег 'tinyxml', однако я использую 'tinyxml2'!
Я пытаюсь вставить элемент поддерева в существующий файл XML. Моя проблема в том, что после запуска программы и проверки файла XML поддерево просто не существует в документе. В исходном коде я также проверяю наличие ошибок при загрузке и сохранении файла, поэтому с этими функциями проблем нет, они работают правильно. Я попробовал несколько разных подходов, а добавление одного элемента с помощью функции UserList.NewElement(*name*)
также работает нормально. Теперь я хочу вставить целое поддерево из текстовой переменной...
Мой последний подход выглядит так (упрощено без проверки LoadFile
и SaveFile
):
tinyxml2::XMLDocument UserList;
UserList.LoadFile(*Path*);
const char* XMLText = "<user name=\"test-user\" gender=\"male\"><ability description=\"I_can_do_magic\" /></user>";
tinyxml2::XMLDocument TestParse;
TestParse.Parse(XMLText);
tinyxml2::XMLElement* myNewUser = TestParse.RootElement();
UserList.FirstChildElement( "magicians" )->InsertEndChild(myNewUser);
UserList.SaveFile(*Path*);
Кстати... Когда я попытался разобрать свой XMLText
с помощью tinyxml2::XMLDocument UserList
, сохраненный файл XML будет пустым после запуска программы. Это означает, что ни исходное содержимое XML-документа, ни новое проанализированное поддерево не будут сохранены при попытке сделать это. Этот факт заставил меня использовать второй tinyxml2::XMLDocument TestParse
. Теперь XML-файл сохраняется с исходным содержимым, однако проанализированное поддерево по-прежнему отсутствует... Большое спасибо за любое решение/помощь/совет.