0

これはおそらく非常に愚かな質問ですが、私はどんな助けにも感謝したいと思います。私はlibxml2を使用して、SQLデータベースのデータからXMLファイルを作成しています。だから私はSQLテーブルのフィールドをループして次のようなことをしています:

xmlNewChild(node, NULL, (xmlChar*) template[i].c_str(), (xmlChar*) data[i].c_str());

XMLの作成:

<template>data</template>

さて、これらのごく一部については、こっそりと、data[i]XMLを含む文字列に等しい値を設定して別のサブノードを配置したいと思います。したがって、たとえば、 結果のXMLが次のようになるように設定data[i]します。<subnode>text</subnode>

<template><subnode>text</subnode></template>

ただし、XMLでは、これらは常にレンダリングされ&lt;&gt;

<template>&lt;subnode&gt;text&lt;/subnode&gt;</template>

山かっこを保持する方法はありますか?xmlNewChild()代わりに使用すると文字が保存されると思いましたxmlNewTextChild()が、そうではないようです。角かっこを含む文字列を入れて、data[i]作成されたXMLにそれらのかっこを保持する方法はありますか?

(この方法で追加のxmlタグをスニークすることは、やや大雑把な方法のように思えますが、私の場合、多くのフィールドのどれにサブノードが必要かを判断し、それらのサブノードを標準的な方法で構築するよりもはるかに簡単です)。

4

2 に答える 2

0

いいえ、できません。最初にサブノードを解析してから、それを親に追加する必要があります。

于 2013-02-05T01:51:27.633 に答える
0

いいえ、libxml2 は常にコンテンツ内のタグをエスケープします。xmlNodeSetContentxmlNodeAddContentはこの点で異なると思っていましたが、そうではありません&#169;。SetContent はそれを文字通り「実際の」エンティティ参照として含めますが、 AddContent はそれを にエスケープし&amp;#169;ます。

于 2013-02-05T05:23:15.703 に答える