質問
独自のスキーマのXMLファイルの大きなセットがあります-XMLファイルはバイナリ通信プロトコル(メッセージ構造)を定義します。
Googleのプロトコルバッファテクノロジーを活用したいと思います。
既存のコードを使用して、XMLファイルをオブジェクトモデル(メモリ内)にロードしています。 そのオブジェクトモデルから.protoファイルを生成したいと思います。
基本的に私が探しているのは、.protoファイル形式をオブジェクトモデルとして表し、そのオブジェクトモデルを.protoファイルに保存できるコード/ライブラリ(C#/。NET)です。
Jon Skeetのdotnet-protobufsを見てみたところ、それが何をするのか理解できたと思います(.protoファイルに基づいてc#コードを生成します)
ただし、プロジェクトで使用できるかどうかはわかりませんでした(おそらく.proto形式のオブジェクトモデルがありますが、この形式を解析して書き出せないコードのみです)
解決
protobuf-net(.NETのプロトコルバッファーの私のバージョン)は、プロトファイルの生成をプリミティブでサポートしていますが、空白を埋めることは難しくありません。最初にコアエンジンに集中し、次にプロトからC#を生成しました。オブジェクトモデルからプロトを生成するためにxsltを書くことはそれほど違いはありません。ただし、数日かかります...(現時点では時間が限られています)。
これが役立つ場合は、お知らせください。
情報については、protobuf-netエンジンはほとんどのXmlSerializer
クラス(およびDataContractSerializer
、最近ではBinaryFormatter
)と互換性があります。したがって、コードが現在xmlとして機能している場合、protobuf-ネット。もちろん、保証はありません...
他のヒント
私のコードは、バイナリとテキストへのシリアライズとデシリアライズしかできません。ただし、 Marc GravellのプロジェクトにはXML機能があると思います。実際、彼は.protoファイル(それ自体はprotobufとしてエンコードされている)のバイナリバージョンをロードし、XMLとして書き出し、XSLTを適用することに基づいてC#コードを生成すると信じています...