Я хочу сделать то же самое, что и парень в этот вопрос.
Я хочу преобразовать дочерний элемент XML (и все его дочерние элементы) в строку XML, поэтому, если структура XML
<parent>
<child>
<value>abc</value>
</child>
<parent>
Я хочу XML для дочернего элемента, например,
<child>
<value>abc</value>
</child>
Мне плевать на пробелы. Проблема в том, что принятый ответ из другого вопроса, кажется, устарел, потому что нет никакого метода «Печать» для объектов XMLElement. Могу ли я сделать это с TinyXml2?
Я кодировал следующую функцию, которая помогает мне. Обратите внимание, что в нем могут быть ошибки — я работаю с очень простыми файлами XML, поэтому я не буду притворяться, что проверил все случаи.
void GenXmlString(tinyxml2::XMLElement *element, std::string &str)
{
if (element == NULL) {
return;
}
str.append("<");
str.append(element->Value());
str.append(">");
if (element->GetText() != NULL) {
str.append(element->GetText());
}
tinyxml2::XMLElement *childElement = element->FirstChildElement();
while (childElement != NULL) {
GenXmlString(childElement, str);
childElement = childElement->NextSiblingElement();
}
str.append("</");
str.append(element->Value());
str.append(">");
}