我需要一点帮助。我们有合作伙伴提供的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;
[...]
现在生成的getter和setter不能使用序列化程序两次所需的set / getName和set / getValue ...
旁人有个主意吗?
非常感谢提前
exa.byte