【发布时间】:2018-07-26 06:19:23
【问题描述】:
我正在使用xsd2php 库(它本身使用jsm-serializer)。当我序列化对象时,它返回格式化的 XML,例如:
<?xml version="1.0" encoding="UTF-8"?>
<priceRequest>
<appId>PC</appId>
<appVersion>3.0</appVersion>
</priceRequest>
如何调整序列化程序以在不格式化的情况下输出 XML,如下所示:
<?xml version="1.0" encoding="UTF-8"?><priceRequest><appId>PC</appId><appVersion>3.0</appVersion></priceRequest>
现在我构建如下序列化器:
$serializerBuilder = SerializerBuilder::create();
$serializerBuilder->configureHandlers(function (HandlerRegistryInterface $handler) use ($serializerBuilder) {
$serializerBuilder->addDefaultHandlers();
$handler->registerSubscribingHandler(new BaseTypesHandler());
$handler->registerSubscribingHandler(new XmlSchemaDateHandler());
$handler->registerSubscribingHandler(new AnyTypeHandler());
});
$this->serializer = $serializerBuilder->build();
然后简单的序列化数据:
$this->serializer->serialize($data, $format, $context);
提前谢谢你。
【问题讨论】:
-
看这里JSM Serializer - YAML Reference。我认为您可以使用
inline属性。另一方面,如果你必须创建custom serialization handler,也许你可以使用JMS Serializer的一些属性,看这里Metadata/Driver/XmlDriver.php -
@YulioAlemanJimenez,感谢您的评论。我猜
inline属性与格式无关,而是结构:它将元素置于根目录。
标签: php xml serialization jms-serializer