serializer = new Serializer( [new ObjectNormalizer()], [new XmlEncoder()] ); } /** * Returns the XML response */ public function response(): string { $formats = $this->getValidFormats(); $content = $this->serializer->encode( ['metadataFormat' => [...$formats]], 'xml', [ 'xml_format_output' => true, 'xml_root_node_name' => 'ListMetadataFormats', // Don't include the XML declaration, handled by OaiBase 'encoder_ignored_node_types' => [ \XML_PI_NODE, ], ] ); return OaiBase::create($content, 'ListMetadataFormats'); } /** * @return array> */ private function getValidFormats(): array { $dbConn = Connection::new(); $queryBuilder = $dbConn->createQueryBuilder(); $formats = $queryBuilder->select( 'prefix as metadataPrefix', 'schemaLoc as schema', 'namespace as metadataNamespace', ) ->from('metadata_formats') ->fetchAllAssociative(); return $formats; } }