質問: ### 前提・実現したいこと マルチプラットフォームで動作するアプリを作成する為にQtで実装を行っております。 表題についてですが、 C#でいうところのXmlSerializerと同じ様な形式でxmlのシリアライズ及びデシリアライズをQtでも実現できないのかなと思いご質問させて頂いております。 ざっくりとした質問ですが知恵をお貸し頂ければと思います。 ### XmlSerializerと同じ様な形式 DTO(Entity)をXmlSerializerに放り込んでSerializeするとxmlが出力される。 xmlをXmlSerializerで読み込ませてDeserializeするとDTO(Entity)が生成される。 ### 補足情報(言語/FW/ツール等のバージョンなど) バージョン:Qt 5.7 IDE:VisualStudio2015 + Qt Designer
回答: こんにちは。 C++におけるDTOの意味がはっきりしませんが、クラスや構造体のインスタンスとして回答します。 Qtにシリアライザはなかったと思います。 boost::serializationやcerealを使うと楽できると思います。 私も更に楽できるTheolizerを開発していますが、残念ながら今のところxmlをサポートしていません。Jsonとバイナリをサポートしてます。 【追記】 > > DTO(Entity)をXmlSerializerに放り込んでSerializeするとxmlが出力される。 > > xmlをXmlSerializerで読み込ませてDeserializeするとDTO(Entity)が生成される。 > > > DTOの意味がクラスや構造体のインスタンスの場合、前者はC++の各種シリアライザで可能ですが、後者はC++では不可能です。C++は動的に型を生成できませんので。 C++の場合は、下記イメージになります。 > > インスタンスをシリアライザへ放り込んでSerializeするとxmlが出力される。 > > インスタンスとxmlをデシリアライザへ放り込んでDeserializeするとインスタンスへ回復される。 > > >