From df8476c92a7cd1c3f59ec3e7d7a2147aa2286123 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Fri, 21 Nov 2025 08:24:12 +0100 Subject: [PATCH 1/5] Add XMLSerializer->appendToWriter() --- src/XMLSerializer.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/XMLSerializer.php b/src/XMLSerializer.php index 3f477b5..12e1d7a 100644 --- a/src/XMLSerializer.php +++ b/src/XMLSerializer.php @@ -2,6 +2,7 @@ namespace TheSeer\Tokenizer; use DOMDocument; +use XMLWriter; class XMLSerializer { @@ -32,6 +33,13 @@ public function toXML(TokenCollection $tokens): string { $writer = new \XMLWriter(); $writer->openMemory(); $writer->setIndent(true); + + $this->appendToWriter($writer, $tokens); + + return $writer->outputMemory(); + } + + public function appendToWriter(XMLWriter $writer, TokenCollection $tokens): void { $writer->startDocument(); $writer->startElement('source'); $writer->writeAttribute('xmlns', $this->xmlns->asString()); @@ -68,7 +76,5 @@ public function toXML(TokenCollection $tokens): string { $writer->endElement(); $writer->endDocument(); - - return $writer->outputMemory(); } } From 8a57cf7c87fa13cd147ed8fd8736fa68f0cfce27 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Sat, 22 Nov 2025 09:42:24 +0100 Subject: [PATCH 2/5] Added test --- tests/XMLSerializerTest.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/XMLSerializerTest.php b/tests/XMLSerializerTest.php index 7cbbbe0..d6015a6 100644 --- a/tests/XMLSerializerTest.php +++ b/tests/XMLSerializerTest.php @@ -25,6 +25,18 @@ public function testCanBeSerializedToXml(): void { $this->assertEquals($expected, $serializer->toXML($this->tokens)); } + public function testCanAppendToWriter(): void { + $expected = \file_get_contents(__DIR__ . '/_files/test.php.xml'); + + $writer = new \XMLWriter(); + $writer->openMemory(); + $writer->setIndent(true); + + $serializer = new XMLSerializer(); + $serializer->appendToWriter($writer, $this->tokens); + $this->assertEquals($expected, $writer->outputMemory()); + } + public function testCanBeSerializedToDomDocument(): void { $serializer = new XMLSerializer(); $result = $serializer->toDom($this->tokens); From 3fb2723556497c3d0e6b8cc9b408f3a5c8b66240 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Sat, 22 Nov 2025 09:51:28 +0100 Subject: [PATCH 3/5] fix --- src/XMLSerializer.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/XMLSerializer.php b/src/XMLSerializer.php index 12e1d7a..253509f 100644 --- a/src/XMLSerializer.php +++ b/src/XMLSerializer.php @@ -34,13 +34,14 @@ public function toXML(TokenCollection $tokens): string { $writer->openMemory(); $writer->setIndent(true); + $writer->startDocument(); $this->appendToWriter($writer, $tokens); + $writer->endDocument(); return $writer->outputMemory(); } public function appendToWriter(XMLWriter $writer, TokenCollection $tokens): void { - $writer->startDocument(); $writer->startElement('source'); $writer->writeAttribute('xmlns', $this->xmlns->asString()); @@ -75,6 +76,5 @@ public function appendToWriter(XMLWriter $writer, TokenCollection $tokens): void } $writer->endElement(); - $writer->endDocument(); } } From c8c41853d1ac742c65d456d483ef2df5cd74414c Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Sat, 22 Nov 2025 09:52:24 +0100 Subject: [PATCH 4/5] Update XMLSerializerTest.php --- tests/XMLSerializerTest.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/XMLSerializerTest.php b/tests/XMLSerializerTest.php index d6015a6..9a439c8 100644 --- a/tests/XMLSerializerTest.php +++ b/tests/XMLSerializerTest.php @@ -33,7 +33,10 @@ public function testCanAppendToWriter(): void { $writer->setIndent(true); $serializer = new XMLSerializer(); + $writer->startDocument(); $serializer->appendToWriter($writer, $this->tokens); + $writer->endDocument(); + $this->assertEquals($expected, $writer->outputMemory()); } From b2fb8be32aad35062ff472839bc44b0cfc61cfa5 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Sat, 22 Nov 2025 09:56:22 +0100 Subject: [PATCH 5/5] cs --- tests/XMLSerializerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/XMLSerializerTest.php b/tests/XMLSerializerTest.php index 9a439c8..6e71d5f 100644 --- a/tests/XMLSerializerTest.php +++ b/tests/XMLSerializerTest.php @@ -36,7 +36,7 @@ public function testCanAppendToWriter(): void { $writer->startDocument(); $serializer->appendToWriter($writer, $this->tokens); $writer->endDocument(); - + $this->assertEquals($expected, $writer->outputMemory()); }