0

私はこのようなxmlを持っています。

<projects>
    <entry key="project"></entry>
    <entry key="project"></entry> 
    <entry key="project"></entry>
</projects>

そして実体

class Project
{
    const ENCODING = 'UTF-8';

    /**
     * @var integer
     */
    protected $id;

    /**
     * @var array(\ACme\ProjectBundle\Entity\Project)
     * @JMS\Type("array<Acme\ProjectBundle\Entity\Project>")
     * @JMS\XmlList(entry="projects")
     */
    protected $projects;
}

そのようなJMSシリアライザーを使用してデシリアライズしようとしています:

  return $this->serializer->deserialize($rawXml, 'array<Acme\ProjectBundle\Entity\Project>', 'xml');

しかし、まだエラーメッセージが表示されます:

The array type must be specified either as "array<T>", or "array<K,V>".

4

2 に答える 2

0

私はそれがこのように動作すると思います:

class Projects
{
    /**
     * @JMS\Type("array<Acme\ProjectBundle\Entity\Project>")
     * @JMS\XmlList(entry="entry")
     */
    protected $entries;
}
class Project
{
    /**
     * @JMS\Type("string")
     * @JMS\XmlAttribute
     */
    protected $key;
}
于 2015-02-18T09:16:12.127 に答える
0

使用してみてください:

ArrayCollection<Acme\ProjectBundle\Entity\Project>
于 2014-07-07T11:59:29.303 に答える