Я еще не нашел подходящего учебника по libxml2, и поэтому я борюсь с некоторыми базовыми концепциями, имея «только» API документы , которые, ИМХО, немного слишком кратки в некоторые моменты.
Это (C ++) моя попытка записать данные в кодировке Base64 в документ (текстовый узел как дочерний элемент корневого элемента):
// create doc and root node
xmlDocPtr doc = xmlNewDoc( (xmlChar*) "1.0" );
xmlNodePtr root_node = xmlNewNode( 0, (xmlChar*) "root" );
xmlDocSetRootElement( doc, root_node );
// create text node and write data
xmlNodePtr node = xmlNewDocText( doc, (xmlChar*) "" );
xmlAddChild( root_node, node );
xmlTextWriterPtr writer = xmlNewTextWriterTree( doc, node, 0 );
xmlTextWriterWriteBase64( writer, "asdf", 0, 4 );
Следующее просто выполняет тестовый вывод:
// get textual representation
xmlChar *mem = 0;
int size = 0;
xmlDocDumpFormatMemory( doc, &mem, &size, 1 );
if ( mem ) {
std::cout << mem << std::endl;
}
К сожалению, текстовый узел не появляется в выводе.
Буду благодарен за решение этой проблемы и некоторые ссылки на вводный материал по libxml2.