【发布时间】:2019-04-18 15:28:35
【问题描述】:
我想使用 Symfony XML Serializer 来转换类实例(不是数组)。因此,例如,我想使用属性 myAtt="foo" 创建一个 XML,
<?xml version="1.0"?>
<REQ>
<TravelAgencySender myAtt="foo">
<CityName>town</CityName>
<AgencyID>agency</AgencyID>
</TravelAgencySender>
</REQ>
所以我创建了一个这样的类
class TravelAgencySender
{
/**
* @var string
*/
private $CityName;
/**
* @var string
*/
public $AgencyID;
.....
}
以及下面的初始化
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\NameConverter\MetadataAwareNameConverter;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory;
use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
use Doctrine\Common\Annotations\AnnotationReader;
$classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));
$metadataAwareNameConverter = new MetadataAwareNameConverter($classMetadataFactory);
$serializer = new Serializer(
[new ObjectNormalizer($classMetadataFactory, $metadataAwareNameConverter)],
['json' => new JsonEncoder(), 'xml' => new XmlEncoder()]
);
有人知道如何添加 myAtt 属性吗?
谢谢
这会产生下面的 XML
<?xml version="1.0"?>
<REQ>
<TravelAgencySender>
<CityName>town</CityName>
<AgencyID>agency</AgencyID>
</TravelAgencySender>
</REQ>
【问题讨论】:
-
如果可以的话,继续使用 JMSSerializer Bundle。一个带有属性的例子是here。
标签: xml symfony serialization