PHP XMLReader, obtenha a versão e codificação

Atualmente estou reescrevendo uma classe PHP que tentou dividir um arquivo XML em partes menores para usar XMLReader e XMLWriter em vez da abordagem atual do sistema de arquivos básico e regex.

No entanto, não consigo descobrir como obter a versão, codificação e sinalizadores independentes do preâmbulo XML.

O início do meu arquivo XML de teste é assim:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fakedoctype SYSTEM "fake_doc_type.dtd">

 <!--
 This is a comment, it's here to try and get the parser to break in some way
 --> 

<root attribute="value" otherattribute="othervalue">

Eu posso abri-lo bem com o leitor e percorrer o documento com read (), next () etc, mas eu simplesmente não consigo obter o que está em<?xml ... ?>. A primeira coisa que consigo acessar é o DOCTYPE falso.

Meu código de teste é o seguinte:

$a = new XMLReader ();
var_dump ($a -> open ('/path/to/test/file.xml')) // true
var_dump ($a -> nodeType); // 0
var_dump ($a -> name); // ""
var_dump ($a -> readOuterXML ()); // ''
var_dump ($a -> read ()); // true
var_dump ($a -> nodeType); // 10
var_dump ($a -> readOuterXML ()); // <!DOCTYPE fakedoctype SYSTEM "fake_doc_type.dtd">

É claro que eu poderia sempre assumir XML 1.0, codificando UTF8 e standalone = yes, mas por uma questão de correção eu realmente preferiria ser capaz de pegar os valores do meu feed de origem e usá-los ao gerar os arquivos divididos.

A documentação no XMLReader e XMLwriter parece ser muito pobre, então há toda chance que eu perdi algo nos documentos. Alguém sabe o que fazer neste caso?

questionAnswers(1)

yourAnswerToTheQuestion