Сборка XML-документа в C++
Сборка документа - создание узлов в памяти без готовой строки на входе.
Пустой pugi::xml_document принимает
корень через append_child, а дочерние
теги добавляют к уже созданному узлу:
#include <iostream>
#include <pugixml.hpp>
int main() {
pugi::xml_document doc;
pugi::xml_node root = doc.append_child("root");
pugi::xml_node note = root.append_child("note");
note.append_attribute("lang") = "en";
note.text().set("memo");
return 0;
}
Текст задают через text, атрибут -
через append_attribute. Готовое
дерево превращают в строку и выводят
через поток:
#include <iostream>
#include <sstream>
#include <string>
#include <pugixml.hpp>
int main() {
pugi::xml_document doc;
pugi::xml_node root = doc.append_child("root");
pugi::xml_node note = root.append_child("note");
note.append_attribute("lang") = "en";
note.text().set("memo");
std::ostringstream out;
doc.save(out, "", pugi::format_raw);
std::cout << out.str() << "\n";
return 0;
}
Соберите документ с корнем catalog
и одним тегом book с атрибутом
isbn "978-0" и текстом
"C++ guide". Выведите получившуюся
строку XML.
Соберите корень shipment и два тега
crate с атрибутами weight
"10" и "15". Внутри каждого
crate добавьте label с текстами
"A" и "B". Выведите итоговый
XML одной строкой вывода.