From 820cc7ad0330cea0354a230dd6374573d18d15dc Mon Sep 17 00:00:00 2001 From: Buster Neece Date: Sun, 21 Apr 2024 07:09:28 -0500 Subject: [PATCH] Make XML writer support excluding opening tag in the writing process. --- src/Radio/Frontend/Icecast.php | 5 +---- src/Xml/Writer.php | 15 ++++++--------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/Radio/Frontend/Icecast.php b/src/Radio/Frontend/Icecast.php index 221335bbb..c4a79c07e 100644 --- a/src/Radio/Frontend/Icecast.php +++ b/src/Radio/Frontend/Icecast.php @@ -292,10 +292,7 @@ final class Icecast extends AbstractFrontend } } - $configString = Writer::toString($config, 'icecast'); - - // Strip the first line (the XML charset) - return substr($configString, strpos($configString, "\n") + 1); + return Writer::toString($config, 'icecast', false); } public function getCommand(Station $station): ?string diff --git a/src/Xml/Writer.php b/src/Xml/Writer.php index 3f1df5c34..31323f4a1 100644 --- a/src/Xml/Writer.php +++ b/src/Xml/Writer.php @@ -15,21 +15,18 @@ final class Writer { public static function toString( array $config, - string $baseElement = 'xml-config' - ): string { - return self::processConfig($config, $baseElement); - } - - private static function processConfig( - array $config, - string $baseElement = 'xml-config' + string $baseElement = 'xml-config', + bool $includeOpeningTag = true ): string { $writer = new XMLWriter(); $writer->openMemory(); $writer->setIndent(true); $writer->setIndentString(str_repeat(' ', 4)); - $writer->startDocument('1.0', 'UTF-8'); + if ($includeOpeningTag) { + $writer->startDocument('1.0', 'UTF-8'); + } + $writer->startElement($baseElement); // Make sure attributes come first