【发布时间】:2016-12-16 14:35:14
【问题描述】:
我目前正在尝试在 PHP 中重建一些 java 代码。 该代码从给定对象构建 XML 并将 XML 请求发送到后端。后端传递响应。现在我想将 XML 响应转换为某个复杂类的 php 对象。我使用 SimpleXml 将字符串转换为 XmlResponse 类,但我只能从 XmlResponse 类访问 getter 和 setter,而不能访问 XmlResponse 类中的其他类。 在 Java 中,我只是使用 JAXB,但我不确定这样的事情是否可行。问题是,数据标签可以根据请求更改,传递其他对象!
我正在使用以下设置:
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
}
Xml状态
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 吗? --> php.net/manual/en/simplexmlelement.xpath.php
标签: php xml xml-parsing zend-framework2