【发布时间】:2015-11-21 23:12:32
【问题描述】:
我正在尝试在 Symfony2 上使用 FOSRestBundle 和 JMSSerializerBundle 构建 API。我成功地用 json 输出完美地运行它。但是 XML 输出不好。它运行,生成一个 XML 数据,但是由于 xml 标记名称,数据是无用的。
控制器的 PHP 代码:
use JMS\Serializer\Annotation;
....
....
....
/**
* Version
* @return Response
*
* @Annotation\XmlKeyValuePairs
*
* @ApiDoc(
* resource=true,
* description="Method for API Version",
* statusCodes={
* 200="Success"
* },
* parameters={
* }
* )
*/
public function versionAction () {
$response = [
'code' => 200,
'message' => 'api version',
'data' => [
'version' => '0.0.1',
'lastupdate' => '2015-11-21 23:29:00',
'now' => (new \DateTime())->format('Y-m-d H:i:s')
]
];
return $response;
}
XML 输出:
<?xml version="1.0" encoding="UTF-8"?>
<result>
<entry>200</entry>
<entry><![CDATA[api version]]></entry>
<entry>
<entry><![CDATA[0.0.1]]></entry>
<entry><![CDATA[2015-11-21 23:29:00]]></entry>
<entry><![CDATA[2015-11-22 00:41:30]]></entry>
</entry>
</result>
这里的问题是 XML 标记都是“条目”。我想要的是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<result>
<code>200</code>
<message>api version</message>
<data>
<version>0.0.1></version>
<lastupdate>2015-11-21 23:29:00</lastupdate>
<now>2015-11-22 00:41:30</now>
</data>
</result>
我正在使用@Annotation\XmlKeyValuePairs,如文档所述,但无法获得我想要的结果。 here 上有一个解决方案,它正在工作,但这不是一个好的解决方案,因为文件来自作曲家。
我不知道我是否遗漏了什么,或者是 JMSSerializerBundle 或 Symfony2 中的错误,还是我必须使用另一个注释才能使 XmlKeyValuePairs 正常工作?
【问题讨论】:
-
顺便说一下,我可以使用@XmlAttributeMap 注解,用于
<result name="version" value="0.0.1"/>输出。但它也不起作用。
标签: php xml symfony fosrestbundle jmsserializerbundle