現在、PHPでいくつかのJavaコードを再構築しようとしています。 コードは、指定されたオブジェクトからXMLを構築し、XML要求をバックエンドに送信します。バックエンドは応答を返します。今私は特定の複雑なクラスのPHPオブジェクト内のXML応答を変換したい。私は、SimpleXmlを使用して文字列をクラスXmlResponseに変換しましたが、XmlResponseクラス内のゲッターとセッターにしかアクセスできず、XmlResponseクラス内の他のクラスにはアクセスできません。 Javaでは、単にJAXBを使用しますが、このようなことが可能かどうかはわかりません。問題は、リクエストに応じてデータタグを変更して、リクエストに応じて他のオブジェクトを配信できることです。私は次のセットアップを使用していますPHP XML複雑なPHPクラスへの文字列
:
PHP 5.6または7
Zendの2または3
ご挨拶!
<?php
$responseObject = convertStringToObject($responseString, XMLResponse::class);
$result = $responseObject->getResult();
$data = $responseObject->getResult()->getData();
$status = $responseObject->getResult()->getStatus();
$user = $responseObject->getResult()->getData()->getUser()
?>
応答は次のようになります:
<response>
<transaction_id>1234</transaction_id>
<result>
<status>
<code>1</code>
<msg>Success</msg>
</status>
<data>
<user>
<fname>Jon</lname>
<lname>Doe</lname>
<birthday>1986-08-01 00:00:00</birthday>
</user>
</data>
</result>
</response>
は、今私はPHPで以下のクラスを持って終わり
は、私はこのような何かをしたいです。
XmlResponse
class XmlResponse {
public $result; #XmlResult Class
public $transaction_id; #string
public function getArrayCopy() {
return get_object_vars($this);
}
//getter + setter
}
XmlResult
class XmlResult {
public $data; #XmlData Class
public $status; #XmlStatus Class
public function getArrayCopy() {
return get_object_vars($this);
}
//getter + setter
}
XmlStatus
class XmlStatus {
public $code; #string
public $msg; #string
public function getArrayCopy() {
return get_object_vars($this);
}
//getter + setter
}
XMLDATA
class XmlData {
public $user; #User Class
public $car; #Car Class
public $member; #Member Class
public $foo; #Foo Class
public function getArrayCopy() {
return get_object_vars($this);
}
//getter + setter
}
ユーザー
class User {
public $fname; #string
public $lname; #string
public $birthday; #string
public function getArrayCopy() {
return get_object_vars($this);
}
//getter + setter
}
xpathを使用してxmlをクエリすることを検討しましたか? - > http://php.net/manual/ja/simplexmlelement.xpath.php – Crisp