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?