2011-10-19 9 views
2

私はスキーマに縛られたXMLを入力として受け取り、それをprotbufに変換する必要のあるJavaアプリケーションを作成しています。実行する必要のある処理はありません。私は単にXMLからいくつかのフィールドを取得し、それらを使ってプロトタイプを作成するだけです。XMLをprotobufに翻訳する

JIBXを使用して、XMLを私のprotobufのBuilderクラスに直接マップすることができ、中途半端な作業を排除できることを期待していました。しかし、JIBXは、void(http://jibx.sourceforge.net/details/binding-attributes.html)を返すように構築されているオブジェクトのset-methodを必要とします。 Protobufによって生成されたBuilderクラスは、Builder設計パターンに従い、そのsetterメソッドからvoidを戻しません。

この問題を回避し、JIBXがXMLをprotobufクラスに直接変換してもらえますか?おそらく別のXML解析ツールがあります。または、XMLとprotobufの間の変換を容易にするために中間コードを記述する必要がありますか?

注:私が受け取っている入力XMLは非常に大きく、その中からいくつかのフィールドしか必要ではありません。これは私の使用から重いXML解析ツールのいくつかを割引いています。

+0

Javaにする必要がありますか? protobuf-netクラスは、通常、XmlSerializerとprotobuf-netの両方で同時に非常に満足しています –

+0

残念ながら、このプロジェクトはJavaでなければなりません。私は、仕事を終わらせるために使用するツールをいくつかの柔軟性を持っていますが、それはそれについてです。 – Josh

+1

XSL変換はどうですか?いくつかのフィールドを抽出してprotobufファイルを作成する必要がある場合、スタイルシートは非常に簡単に記述することができます。 – Marko

答えて

0

私は入力xmlでXSL変換を実行し、(小さな)カスタムSAXパーサーを通して出力を供給してprotobufを作成しました。助けてくれてありがとう!

+0

私は同じ質問の解決策を探しています。どのような例を投稿してもかまいません。 –

+0

私は必要なフィールドを取得してprotobufを構築するためにサックスパーサーを使用しました。残念ながら、その解決策は特に特別なものではなかった。 – Josh