1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- <?php
- namespace PhpOffice\PhpSpreadsheet\Shared;
- class XMLWriter extends \XMLWriter
- {
- public static $debugEnabled = false;
- /** Temporary storage method */
- const STORAGE_MEMORY = 1;
- const STORAGE_DISK = 2;
- /**
- * Temporary filename.
- *
- * @var string
- */
- private $tempFileName = '';
- /**
- * Create a new XMLWriter instance.
- *
- * @param int $pTemporaryStorage Temporary storage location
- * @param string $pTemporaryStorageFolder Temporary storage folder
- */
- public function __construct($pTemporaryStorage = self::STORAGE_MEMORY, $pTemporaryStorageFolder = null)
- {
- // Open temporary storage
- if ($pTemporaryStorage == self::STORAGE_MEMORY) {
- $this->openMemory();
- } else {
- // Create temporary filename
- if ($pTemporaryStorageFolder === null) {
- $pTemporaryStorageFolder = File::sysGetTempDir();
- }
- $this->tempFileName = @tempnam($pTemporaryStorageFolder, 'xml');
- // Open storage
- if ($this->openUri($this->tempFileName) === false) {
- // Fallback to memory...
- $this->openMemory();
- }
- }
- // Set default values
- if (self::$debugEnabled) {
- $this->setIndent(true);
- }
- }
- /**
- * Destructor.
- */
- public function __destruct()
- {
- // Unlink temporary files
- if ($this->tempFileName != '') {
- @unlink($this->tempFileName);
- }
- }
- /**
- * Get written data.
- *
- * @return string
- */
- public function getData()
- {
- if ($this->tempFileName == '') {
- return $this->outputMemory(true);
- }
- $this->flush();
- return file_get_contents($this->tempFileName);
- }
- /**
- * Wrapper method for writeRaw.
- *
- * @param string|string[] $text
- *
- * @return bool
- */
- public function writeRawData($text)
- {
- if (is_array($text)) {
- $text = implode("\n", $text);
- }
- return $this->writeRaw(htmlspecialchars($text));
- }
- }
|