Не понимаю результат в XML-объектах и ​​PHP SimpleXMLElement

Я использую сущности в XML, и я не понимаю своих результатов.

У меня есть XML-файл, который вызывает внешний объект, это config.xml:

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE config [ <!ENTITY totalInstances SYSTEM "totalInstances.xml"> ]> <config> &totalInstances; </config> 

Вот файл totalInstances.xml:

 <?xml version="1.0" encoding="UTF-8" ?> <totalInstances> <nombre>45</nombre> </totalInstances> 

Поэтому в PHP я загружаю файл config.xml с помощью класса SimpleXMLElement:

 $config = simplexml_load_file('config.xml'); 

Затем я вывожу переменную $ config с var_dump, и вот что я не понимаю:

 object(SimpleXMLElement)[3] public 'totalInstances' => object(SimpleXMLElement)[5] public 'totalInstances' => object(SimpleXMLElement)[6] public 'totalInstances' => object(SimpleXMLElement)[8] public 'nombre' => string '45' (length=2) 

Я ожидал иметь простой узел «totalInstances», который содержит узел «nombre». Что происходит ? Спасибо вам.

edit : Для получения дополнительной информации я не понимаю, почему я получаю три объекта с именем «totalInstances», а в файле totalInstances.xml есть только один? Я ожидал получить этот результат:

 object(SimpleXMLElement)[3] public 'totalInstances' => object(SimpleXMLElement)[8] public 'nombre' => string '45' (length=2) 

Кроме того, я не уверен, чтобы понять, что означает число между «[]» в выходе.

Да, это действительно выглядит странно. Однако вы не можете использовать var_dump или print_r в SimpleXMLElement . Эти элементы с большим количеством магии, и var_dump здесь лежит вам. Я имею в виду,

 var_dump($config->totalInstances->totalInstances); 

Дает NULL и вообще не SimpleXMLElement .

В вашем конкретном случае, если вы хотите использовать документ как SimpleXMLElement с расширенными объектами, вы можете использовать опцию LIBXML_NOENT (подставлять объекты):

 $config = simplexml_load_file('config.xml', NULL, LIBXML_NOENT); 

Это позволяет перебирать и получать доступ к объектам, которые представлены сущностями. Затем var_dump выглядит намного лучше:

 class SimpleXMLElement#4 (1) { public $totalInstances => class SimpleXMLElement#3 (1) { public $nombre => string(2) "45" } }