Если XML такой, как написано:
<Bundle xmlns="http://hl7.org/fhir">
<timing>
<code>
<text value="q6h PRN" />
</code>
</timing>
</Bundle>
Тогда ваша первая попытка близка, но вы пропускаете ссылку на узел text
, поэтому она должна быть:
$timingCode = (string) $reply->timing->code[0]->text->attributes()->value;
Обратите внимание, что code[0]
означает "первый элемент с именем <code>
", так что вы можете написать:
$timingCode = (string) $reply->timing[0]->code[0]->text[0]->attributes()->value;
SimpleXML примет первый узел, если вы не дадите число, поэтому даже если есть кратные числа, вы также можете написать:
$timingCode = (string) $reply->timing->code->text->attributes()->value;
Проще говоря, если вы не обрабатываете пространства имен, вам обычно не нужен метод ->attributes()
, просто обращайтесь к атрибутам с использованием синтаксиса ключа массива, поэтому на самом деле самая простая форма в этом случае:
$timingCode = (string) $reply->timing->code->text['value'];