PHP XMLReader, obtén la versión y la codificación

Actualmente estoy reescribiendo una clase de PHP que trató de dividir un archivo XML en fragmentos más pequeños para usar XMLReader y XMLWriter en lugar del sistema de archivos básico actual y el enfoque de expresiones regulares.

Sin embargo, no puedo averiguar cómo obtener la versión, la codificación y las banderas independientes del preámbulo XML.

El inicio de mi archivo XML de prueba se ve así:

<?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">

Puedo abrirlo bien con el lector y moverme a través del documento con read (), next () etc, pero parece que no puedo entender lo que hay<?xml ... ?>. Lo primero que puedo acceder es el DOCTYPE falso.

Mi código de prueba es el siguiente:

$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">

Por supuesto, siempre podría asumir XML 1.0, codificando UTF8 y standalone = sí, pero en aras de la corrección, preferiría poder capturar cuáles son los valores de mi fuente de alimentación y usarlos al generar los archivos divididos.

La documentación sobre XMLReader y XMLwriter parece ser muy pobre, por lo que hay muchas posibilidades de que me haya perdido algo en los documentos. ¿Alguien sabe qué hacer en este caso?

Respuestas a la pregunta(1)

Su respuesta a la pregunta