Codages internes et de sortie LibXML

J’essaie d’écrire des fichiers XML avec libxml2 dans ISO-8859-1. Mais d’après la documentation, il semble que pour chaque nœud de texte que je crée, je devrai me convertir en UTF-8, qui est le codage interne de libxml. Ensuite, lors de l’appel de xmlSaveFormatFileEnc (), libxml est converti en codage cible et ajoute l’atsortingbut de codage au document.

Cette hypothèse est-elle correcte? Pour l’instant, mon code va grossièrement comme ceci:

xmlNode *root_element = NULL, *node4 = NULL; xmlDoc *doc = NULL; doc = xmlNewDoc(BAD_CAST XML_DEFAULT_VERSION); root_element = xmlNewDocNode(doc, NULL, BAD_CAST("root"), NULL); char * input_str = getLatin1Data(); isolat1ToUTF8(utf8_str, &file_size, input_str, &inlen); node4 = xmlNewCDataBlock(doc, BAD_CAST list_content, xmlStrlen(BAD_CAST utf8_str)); xmlAddChild(root_element, node4); xmlSaveFormatFileEnc("test_file.xml", doc, "UTF-8", 1); xmlFreeDoc(doc);

 xmlNode *root_element = NULL, *node4 = NULL; xmlDoc *doc = NULL; doc = xmlNewDoc(BAD_CAST XML_DEFAULT_VERSION); root_element = xmlNewDocNode(doc, NULL, BAD_CAST("root"), NULL); char * input_str = getLatin1Data(); isolat1ToUTF8(utf8_str, &file_size, input_str, &inlen); node4 = xmlNewCDataBlock(doc, BAD_CAST list_content, xmlStrlen(BAD_CAST utf8_str)); xmlAddChild(root_element, node4); xmlSaveFormatFileEnc("test_file.xml", doc, "UTF-8", 1); xmlFreeDoc(doc); 

Votre hypothèse est juste. Lorsque xmlChar est attendu, comme dans xmlNewCDataBlock , xmlNewText , il s’agit toujours du xmlNewText UTF-8:

De include/libxml/xmlssortingng.h (libxml 2.8.0):

 /** * xmlChar: * * This is a basic byte in an UTF-8 encoded ssortingng. * It's unsigned allowing to pinpoint case where char * are assigned * to xmlChar * (possibly making serialization back impossible). */