Php 如何通过JMS/序列化程序向(反)序列化的XML添加默认名称空间?

Php 如何通过JMS/序列化程序向(反)序列化的XML添加默认名称空间?,php,xml,laravel,serialization,jms-serializer,Php,Xml,Laravel,Serialization,Jms Serializer,我正在使用JMS/序列化程序(在Laravel中)。我已经为我的序列化程序生成了*.yml文件和*.php类。我的yml文件中定义了xml_root_名称和xml_root_命名空间: App\Test\MyApp\PurchaseOrder: xml_root_name: PurchaseOrder xml_root_namespace: http::/tempuri.org/Schema.xsd 现在,当我尝试反序列化XML时,行为会有所不同,这取决于XML根元素中是否有命名空

我正在使用JMS/序列化程序(在Laravel中)。我已经为我的序列化程序生成了*.yml文件和*.php类。我的yml文件中定义了xml_root_名称和xml_root_命名空间:

App\Test\MyApp\PurchaseOrder:
   xml_root_name: PurchaseOrder
   xml_root_namespace: http::/tempuri.org/Schema.xsd
现在,当我尝试反序列化XML时,行为会有所不同,这取决于XML根元素中是否有命名空间定义

<?xml version="1.0!>
<PurchaseOrder OrderDate="2018-01-01" xmlns="http::/tempuri.org/Schema.xsd">
  ...
</PurchaseOrder>
如何在JMS/序列化程序中应用默认名称空间,以便在接收到没有名称空间定义的XML时,仍然能够解析和反序列化此文件?另外,在序列化对象时,如何将名称空间应用于根元素

<?xml version="1.0!>
<PurchaseOrder OrderDate="2018-01-01">
  ...
</PurchaseOrder>
<?xml version="1.0!>
<PurchaseOrder OrderDate="2018-01-01">
  ...
</PurchaseOrder>
$builder = SerializerBuilder::create();
$builder->addMetadataDir('metadata', 'App\Test\MyApp\PurchaseOrder');
$builder->configureHandlers(function(HandlerRegistryInterface $handler) use ($builder) {
  $builder->addDefaultHandlers();
  $handler->registerSubscribingHandler(new XmlSchemaDateHandler());
});
$serializer = $builder->build();
...
$object = $serializer->deserialize($xml, 'App\Test\MyApp\PurchaseOrder', 'xml');