PHP XMLReader, получить версию и кодировку

В настоящее время я переписываю класс PHP, который пытался разбить XML-файл на более мелкие куски, чтобы использовать XMLReader и XMLWriter вместо текущей базовой файловой системы и подхода регулярных выражений.

Однако я не могу понять, как получить версию, кодировку и автономные флаги из преамбулы XML.

Начало моего тестового XML-файла выглядит следующим образом:

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

Я могу открыть его с помощью ридера и просмотреть документ с помощью read (), next () и т. Д., Но я просто не могу понять, что там находится<?xml ... ?>, Первое, что я могу получить, это поддельный DOCTYPE.

Мой тестовый код выглядит следующим образом:

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

Конечно, я всегда мог принять XML 1.0 с кодировкой UTF8 и standalone = yes, но ради правильности я действительно предпочел бы получить значения в исходной ленте и использовать их при создании файлов разделения.

Документация по XMLReader и XMLwriter, похоже, очень скудная, поэтому есть все шансы, что я что-то пропустил в документации. Кто-нибудь знает, что делать в этом случае?

Ответы на вопрос(1)

Ваш ответ на вопрос