From ff5103ab8fedcc3f980850f2b2fb6f501d8bf8b9 Mon Sep 17 00:00:00 2001 From: Markus Thielen Date: Tue, 28 Jan 2025 10:22:02 +0100 Subject: [PATCH] * Ability to provide custom dtd to serializer --- src/CXml/Serializer.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/CXml/Serializer.php b/src/CXml/Serializer.php index 9bc279e..b7e5b08 100644 --- a/src/CXml/Serializer.php +++ b/src/CXml/Serializer.php @@ -30,11 +30,13 @@ { public const DOC_TYPE_VERSION = '1.2.063'; - private function __construct(private SerializerInterface $jmsSerializer) - { - } + private function __construct( + private SerializerInterface $jmsSerializer, + private string $dtdUri + ) + {} - public static function create(): self + public static function create(string $dtdUri = 'http://xml.cxml.org/schemas/cXML/' . self::DOC_TYPE_VERSION . '/cXML.dtd'): self { $jmsSerializer = SerializerBuilder::create() ->configureListeners(static function (EventDispatcherInterface $dispatcher): void { @@ -55,7 +57,7 @@ public static function create(): self ) ->build(); - return new self($jmsSerializer); + return new self($jmsSerializer, $dtdUri); } public function deserialize(string $xml): CXml @@ -71,11 +73,11 @@ public function deserialize(string $xml): CXml return $this->jmsSerializer->deserialize($xml, CXml::class, 'xml'); } - public function serialize(CXml $cxml, string $docTypeVersion = self::DOC_TYPE_VERSION): string + public function serialize(CXml $cxml): string { $xml = $this->jmsSerializer->serialize($cxml, 'xml'); - $docType = ''; + $docType = 'dtdUri.'">'."\n"; $xmlPrefix = ''; // add doctype, as it is mandatory in cXML