Мне не разрешили создать новый тег 'tinyxml2', поэтому я использую тег 'tinyxml', однако я использую 'tinyxml2'!Вставка поддерева из текста в существующий файл XML с использованием 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*);
Кстати ... When Я попытался разобрать мой XMLText
с помощью tinyxml2::XMLDocument UserList
сохраненный файл XML будет пуст после запуска программы. Это означает, что ни один исходный документ XML-документа, ни недавно обработанное поддерево не будут сохранены при попытке сделать это. Этот факт заставил меня использовать второй tinyxml2::XMLDocument TestParse
. Теперь файл XML сохраняется с его исходным контентом, однако разборное поддерево по-прежнему отсутствует ... большое спасибо за любое решение/помощь/совет.
Спасибо большое за ваш ответ. Однако для моего случая это произошло слишком поздно, в то время я нашел обходной путь (не используя tinyxml). Это решение может помочь другим, хотя ... – Dino