web-dev-qa-db-ja.com

PHP XSDからのクラス?

世界には、JavaBeansまたはJAXB for PHPに類似したものはありますか? XMLスキーマからPHPクラスを生成することは可能ですか?

APIをXSDスキーマとして公開することは一般的な方法です。 JavaおよびC#の人は、XSDから直接クラスを生成することでこれを利用できます。PHPに同じツールはありますか?

23
Qwerty

私は現在この問題に取り組んでおり、ツールの安定状態が落ち次第、リリースする予定です。ここをチェックしてください http://mikebevz.com/xsd-to-php-tool/

更新。私は最初の実用的なプロトタイプをリリースしました。UBL2.0スキーマと1つの単純なスキーマで問題なく動作しますが、より深刻なテストが進行中です。作業中のスキーマを送信していただければ幸いです。そのため、テストスイートに含めます。

更新。 2. XSD2PHPはバージョン0.0.5に達しました。 https://github.com/moyarada/XSD-to-PHP で進行状況を確認します

7
Mike Bevz

XSDクラスジェネレーターを使用する主な理由は、

  1. コンパイル時間チェックを取得
  2. プレーンな古いXML APIよりも簡単な構文
  3. IDEでの自動補完。

これをPHPと比較してください。 PHPははありませんコンパイル時のチェックがあり、動的メソッド/プロパティのサポートがあります。これにより、上記の2つの主な理由が無効になり、本当に自動補完が必要でない限り、これは問題になりません。つまり、PHPでXSDクラスジェネレーターを使用する理由があります。そしてそれがおそらく何も存在しない理由でもあります。

私の提案は、PHPを使用することです Simple XML これは、実行時に動的にXMLに一致するプロパティを作成します。 XSDファイルに対してXMLを検証してからシンプルXMLオブジェクトを作成すると、コードを生成することなく、メソッドとプロパティを備えたXMLオブジェクト構造が完成します。 PHPでの完璧なアプローチ。

もちろん、SimpleXMLが生成されたXSDクラスと同じであるとは述べていません。しかし、使用方法とAPIに関してはかなり近いです。あなたはまだ$company->employee[2]->firstname どちらにしても。

3
Martin Wickman

これはまともな仕事をしているようです https://github.com/goetas-webservices/xsd2php

列挙検証を処理したいのですが、私のユースケースでは問題なく動作するように見えました。生成するMETA .ymlファイルが役に立った。

0
Tim Ramsey

XSDスキーマは通常、SOAP Webサービス上のWSDLファイルに書き込まれます。

wsdl2phpは、WSDL(XSD)スキーマをphpクラスに解析するためのツールです。 phpのネイティブSoapClientをクライアントとして使用します。

Wsdl2phpの簡単なチュートリアルと使用法については、この投稿を確認してください。

http://itworkarounds.blogspot.com/2011/10/simple-soap-client-with-wsdl2php-using.html

0
Martin Taleski

PiBX と呼ばれる別の最近のツール JiBX に触発されたツールがあります。

サイトから:

PiBXは、PHPのXMLデータバインディングフレームワークです。

PiBXを使用すると、利用可能なXMLスキーマに基づいてPHPクラスを生成できます。これらのクラスを使用すると、スキーマチェック、制約、または制限に煩わされることなく、情報をXMLにマーシャリングできます。

0
Boy Baukema

このライブラリは、今日の最良の選択のようです: https://github.com/goetas/xsd2php

PHP XML要素のクラスを生成し、前後に変換できます:

XML-> PHP-> XML

0

しばらく前に調べたところ、確かに見つかりませんでした。スキーマが単純な場合、フラットスキーマの 単純なバージョンをハッキングした の人がいます。

それは私が知っているすべてです。通常 これらの人 は主要言語以外の言語をサポートするのが得意ですが、PHPもサポートしていません。

0
xcut

DMS Software Reengineering Toolkit は、構成可能なコード生成機構であり、任意の正式なドキュメントを入力として処理するために使用できます。 DMSは、任意の出力言語でコードを生成するために使用できます。

これを使用して、ネイティブのJavaおよびスキーマの古い従兄弟であるDTDからのCOBOL XMLリーダーおよびライターを生成しました。PHPにも同じ考え方を簡単に適用できます。

0
Ira Baxter