7
votes

omettre la déclaration XML lors de l'épargne XML avec boost

est-il possible, via XML_Writer_Settings utilisé comme troisième paramètre dans l'appel Write_xml, pour omettre la déclaration XML lorsque la fonction enregistre le XML? Je veux dire, je voudrais ne pas avoir la première "Version XML =" Blah "coding =" bla bla ". Je cherche Internet mais je n'ai toujours pas trouvé de réponse. Comment le faire?


1 commentaires

Vous pouvez simplement couper la première chaîne contenant après WRIT_XML ()


3 Réponses :


1
votes

Non, ce n'est pas possible. Regardez ici pour les membres de XML_Writer_Settings

Et aussi, wreck_xml appels wreck_xml_internal qui est (à boost 1.52) xxx


3 commentaires

Que voulez-vous dire avec "ce n'est pas réel"?


@Magallo que ce n'est pas possible.


Ah, pas possible. Eh bien, c'est très décevant. Je savais que Boost a utilisé RapidXML en interne. Je sais que cela est possible avec RapidXML, je ne comprends vraiment pas pourquoi ils ne nous ont pas donné cette possibilité. Merci de toute façon votre réponse.



8
votes

Oui, c'est possible, mais vous devrez appeler directement la fonction "write_xml_element" directement. Voici un exemple avec Boost 1.49:

using namespace boost::property_tree;
ptree pt;
...
write_xml_element(std::cout,ptree::key_type(),pt,-1,xml_writer_settings<ptree::key_type::value_type>());


1 commentaires

Remarque pour tous ceux qui trébuchent sur cette réponse: Si vous souhaitez mettre à jour ceci pour Boost dans les versions ultérieures (je suis sur 1.69), omettez simplement :: valeur_type dans xml_writer_settings <> (Donc, il est xml_writer_settings () ) - nouvelles versions de boost utilisent le key_type pour obtenir le valeur_type . Mon code est juste: wreck_xml_element (std :: cout, {}, arborescence, -1, xml_writer_settings {}); . Merci pour votre réponse, m'a beaucoup aidé!



0
votes

Il semble que Write_XML_Element ne peut pas fonctionner sans XML_Writer_Settings. Et xml_writer_settings a deux versions incompatibles différentes; Un avec et un autre avec.

dans Boost V1.58 Cette ligne est valide: p> xxx pré>

tandis que dans BOOST 1.54 Celles-ci sont valides: P>

boost::property_tree::xml_writer_settings<char> settings;
boost::property_tree::xml_parser::write_xml_element(xmlStream,ptree::key_type(),pt_,-1, settings);


0 commentaires