20年前のレガシーアプリケーションがあり、これをWebフロントエンドに接続したいと考えています。私は、C構造体で定義されたむしろかなり深くネストされたデータ構造を渡す必要があります。私たちは現在、XMLでこれを行う予定です。構造体定義の総数は約150です。これらはすべて1つの巨大なデータ構造にネストされています。ヘッダーファイルをスキャンし、必要に合わせてXMLスキーマを生成するプログラムを探したいと思います。誰もそのようなツールを知っていますか?ヘッダーファイルにC構造体があり、ヘッダーファイルからXMLスキーマを生成する必要があります。
2
A
答えて
0
SWIG(swig.org)には、必要な処理を実行できるXMLターゲット(-xml)があります。
0
GCC XMLというツールがあり、GCCでコンパイルされたプログラムの内部表現をXMLに変換しますが、これ以上メンテナンスされません。
可能性は、構造体宣言のそれはツリーを処理することになるためGCC(C)にプラグインをコーディングすることGCC 4.6プラグイン能力を、(その内部ASTである)を使用することができました。 GCCを拡張するために、より高いレベルのドメイン固有の言語であるGCC MELTを使用することもできます。しかし、どちらの場合でも、ツリー(&ジムプル)のGCCの内部表現を理解する必要があります(150の構造しかない場合は、それは価値がないかもしれません)。しかし、レガシーアプリケーションが十分な大きさであれば、GCC拡張の新しいスキルをそのレガシーアプリケーション上の他のタスクに使用できるため、これらの学習(およびMELTの使用)は価値があるかもしれません。
最後に、RPC-XDRに関連する(やや小規模で今日の標準では)ツールを見てみると、Cのような構造宣言のパーサーが含まれています。
関連する問題
- 1. ヘッダーファイルのC++構造体
- 2. ヘッダーファイルにソースコードを含める必要がありますか?
- 3. 別のヘッダーファイルの1つのヘッダーファイルからの構造体
- 4. C++:ヘッダーファイル内の構造体のベクトル
- 5. 構造体をループする必要があります
- 6. 新しいヘッダーファイルはどこに保存する必要がありますか?
- 7. ヘッダーファイル以外何を使用する必要がありますか?
- 8. jnr-ffi:ヘッダーファイルからJavaコードへの生成ツールがあります
- 9. 構造体のコンテナからフィールドを合計する必要があります
- 10. C++ヘッダーファイルの構成
- 11. Swift:ViewModelを構造体またはクラスにする必要がありますか?
- 12. ファイルヘッダをクラスまたは構造体にする必要がありますか?
- 13. バイナリツリー構造を作成する必要があります
- 14. ヘッダーファイルで実装されている構造体に__attribute __((visibility( "default")))が必要ですか? (C++)
- 15. C++でヘッダーファイルのない構造体と関数をリンクする
- 16. クラスのヘッダーファイルにプライベートメソッドを記述する必要はありますか?
- 17. ヘッダーファイルのグローバル構造
- 18. JavaにCの構造体がありますか?
- 19. 構造体へのポインタはいつ構造体内で使用する必要がありますか?
- 20. ヘッダーファイルに空のクラス宣言がありますか?
- 21. リポジトリ構造を変更する必要があります
- 22. ヘッダーファイルで宣言された変数の型をC++ファイルに記述する必要はありますか?
- 23. ヘッダーファイルを「二重リンク」するのに便利で必要な状況はありますか? (C++)
- 24. ヘッダーファイルがあれば、すべてのフレームワークにバイナリファイルが必要ですか?
- 25. デバッグ時に "定義済みの型 'ValueTuple`2'が構造体である必要がありますか?
- 26. Swiftで構造体辞書を作成するとき、Foundationをインポートする必要がありますか?
- 27. ヘッダーファイル "unknown type"エラーで構造体を使用する
- 28. 構造体 - 's'の引数はバイトオブジェクトである必要がありますが、すでにバイトオブジェクトです
- 29. は、C++の構造体とC#の構造体に違いがありますか?
- 30. 生成されたMySQLスキーマは、Doctrineのディレクトリ構造にありますか?
古いpython [ctypes](http://svn.python.org/projects/ctypes/trunk/ctypeslib/)にはh2xml.pyコードジェネレータが含まれています。 XML文書では、そこからスキーマを生成しようとする多くのツールがあります) – nos