6

C++でオブジェクトを XML 文字列表現に変換する簡単な方法を探しているので、この方法でサーバーと通信できます。

たとえば、次のオブジェクトがあるとします。

class A{
    string data1;
    string data2;
    string dataN;
    list<B> bList;
}

class B{
    string moreData;
}

次の XML 表現が必要です: (インスタンス A を 1 つ作成し、B のインスタンスが 2 つあると仮定します)

<A>
    <data1>content</data1>
    <data2>content</data2>
    <dataN>content</dataN>
    <B>
        <moreData>content</moreData>
    </B>    
    <B>
        <moreData>content</moreData>
    </B>
</A>
4

3 に答える 3

3

C ++にはこの問題に対する普遍的な解決策はありませんが、多くのアドホックな実装が存在します。

この質問には、いくつかの注目すべきリンクとハウツーがあります。C++でシリアル化を実装する方法

于 2012-06-09T15:41:35.253 に答える
3

あなたが説明するものは、XML データバインディングと呼ばれます。XSD または DTD から C++ コードを生成する製品は多数あります。リストについてはhttp://www.xmldatabinding.org/を参照してください。詳細については、 .htmを参照してください。

このC++ の XML データ バインディングの例も見てください。ソース スキーマの例と生成されたコードが示されています。

スキーマが非常に基本的で、それらをジェネレーターに合わせて調整できる場合は、おそらくその仕事をするオープン ソース プロジェクトがいくつかあります。XML 標準にバインドしている場合、ほとんどのジェネレーターの制限にすぐにぶつかります。Liquid XMLジェネレーターは、ほぼすべての XSD 標準に対応していますが、料金を支払う必要があります。

于 2012-05-29T09:56:25.093 に答える
2

つまり、ポインタなどをシリアル化する方法がないため、簡単に言えば、標準的な方法はありません。常にアプリケーション固有になります。

ただし、独自のクラスを作成して、必要に応じてシリアル化することができます。

xmlパーサーに関しては、これを試しましたか?非常にシンプルで効率的で、簡単に習得できます。私は基本的にそれですべてをやりました。商用ライセンスを要求することもできます。

于 2012-05-29T10:17:20.250 に答える