Мне нужна помощь с небольшой помощью. У нас есть XSD от нашего партнера, где
нам нужно создать XML, где элемент использует одно и то же имя для фактической пары ключ / значение и атрибут узла.
<xs:element name="Translation">
<xs:complexType>
<xs:sequence>
<xs:element ref="Name" minOccurs="0"/>
<xs:choice minOccurs="0">
<xs:element ref="Value"/>
<xs:element ref="Unit"/>
<xs:sequence>
<xs:element ref="OptionName"/>
<xs:element ref="OptionValue" minOccurs="0"/>
</xs:sequence>
</xs:choice>
</xs:sequence>
<xs:attribute name="lang" use="required" type="xs:string"/>
<xs:attribute name="name"/>
<xs:attribute name="value"/>
<xs:attribute name="code" type="xs:string"/>
</xs:complexType>
</xs:element>
Как видите, в качестве элемента и атрибута используются "имя" и "значение".
Можно ли указать сериализатору JMS использовать другую функцию для получения этих переменных?
Класс выглядит так:
use App\DataTransfer\AbstractDto;
use JMS\Serializer\Annotation as JMS;
class Translation extends AbstractDto
{
/**
* @var string
* @JMS\XmlELement(cdata=false)
*/
private $Name;
/**
* @var string
* @JMS\XmlElement(cdata=false)
*/
private $Value;
/**
* @var string
* @JMS\XmlElement(cdata=false)
*/
private $Unit;
/**
* @var string
* @JMS\XmlAttribute
*/
private $lang;
/**
* @var string
* @JMS\XmlAttribute
*/
private $name;
/**
* @var string
* @JMS\XmlAttribute
*/
private $code;
/**
* @var string
* @JMS\XmlAttribute
*/
private $value;
[...]
Теперь для генерации геттеров и сеттеров нельзя использовать set / getName и set / getValue, которые необходимы сериализатору дважды ...
У кого-нибудь есть идея?
Заранее большое спасибо, ребята
exa.byte