Узел SimpleXML, к которому вы обращаетесь здесь:
$test->node->php
так или иначе является той инструкцией обработки.Но этого тоже как-то нет.Пока больше нет элементов с тем же именем, вы можете изменить содержимое инструкции обработки:
$test->node->php = 'Yes Sir, I can boogie. ';
$test->asXML('php://output');
Это создает следующий вывод:
<?xml version="1.0"?>
<test>
<node>
<?php Yes Sir, I can boogie. ?>
</node>
</test>
Исходное значениеэтой инструкции обработки была перезаписана.
Однако только запись в это свойство не означает, что вы можете получить к нему доступ и для чтения.Как вы сами поняли, это односторонний путь.
В SimpleXML в общем случае следует учитывать, что инструкции по обработке не существуют.Они все еще находятся в документе, но SimpleXML на самом деле не предоставляет к ним доступ.
DOMDocument позволяет вам делать это вместо этого, и он работает вместе с simplexml:
$doc = dom_import_simplexml($test)->ownerDocument;
$xpath = new DOMXPath($doc);
# prints "/* processing instructions */ ", the value of the first PI:
echo $xpath->evaluate('string(//processing-instruction("php")[1])');