2010-11-19 19 views
0

J'écris une bibliothèque qui crée l'arbre XML à partir des données fournies. Le problème est que les données contiennent des étiquettes à l'intérieur des noeuds. par exemple <node> "this is a very <bold>huge</bold> text" </node> citations - juste pour séparer le texte donné à moi =) Lorsque je crée un fichier XML à l'aide libxml puis l'écrire à la console (en utilisant xmlDumpMEmeory) Je reçois: <node>this is a very &lt;bold&gt;huge&lt;/bold&gt; text</node>C++. libxml2. < and > sont remplacés à <et> les balises contenues dans

Je comprends pourquoi il est si, mais Je n'ai pas d'idées pour réparer ça normalement. La seule solution que je vois est de remplacer manuellement <et> dans mon :: ToString() Mais y a-t-il d'autres symboles (comme <,>) que je devrais remplacer?

Thx pour l'attention

+0

Il est pas clair ce qui est consommé et produit par votre programme. S'il vous plaît mettez votre entrée et sortie dans les guillemets, de sorte qu'ils se mettent dans une police de 'typewriter». –

+0

Je comprends la situation mais pas la question. Qu'aimeriez-vous voir de différent dans le comportement? – sharptooth

+0

Vos données étaient difficiles à comprendre car Stack Overflow traite les balises d'ouverture et de fermeture spécialement. Pour incorporer du code XML ou du code littéralement, vous devez sélectionner le texte requis, puis appuyer sur le bouton de code (c'est l'icône '101010'). –

Répondre

0

Si vous souhaitez intégrer des caractères spéciaux comme celui-ci dans le contenu des éléments, ils doivent être emballés comme CDATA. Une implémentation XML conforme fera toujours ce que vous avez remarqué ici.

libxml devrait avoir une certaine façon d'écrire le contenu des éléments comme CDATA qui devrait fixer pour vous. This semble prometteur:

Fonction: xmlTextWriterWriteCDATA

Ecrire un xml CDATA.