Доброго времени суток!
Язык программирования PHP. Преобразую строку в XML объект:
$xml = simplexml_load_string($xmlstr);
Вывожу на экран echo var_dump($xml);
Получаю такой результат:
object(SimpleXMLElement)#1 (6) {
["url"]=>
object(SimpleXMLElement)#2 (1) {
["@attributes"]=>
array(1) {
["domain"]=>
string(13) "https://ya.ru"
}
}
["yaca"]=>
object(SimpleXMLElement)#3 (1) {
["@attributes"]=>
array(1) {
["url"]=>
string(13) "https://ya.ru"
}
}
["tcy"]=>
object(SimpleXMLElement)#4 (1) {
["@attributes"]=>
array(2) {
["rang"]=>
string(1) "6"
["value"]=>
string(4) "9500"
}
}
["topics"]=>
object(SimpleXMLElement)#5 (1) {
["topic"]=>
object(SimpleXMLElement)#6 (1) {
["@attributes"]=>
array(2) {
["title"]=>
string(43) "Тема: Поисковые системы"
["url"]=>
string(26) "http://yaca.yandex.ru/yca/"
}
}
}
["textinfo"]=>
string(113) "
Тема: Поисковые системы
Регион: Россия
Источник: Официальный"
["r1"]=>
string(132) "wutwrfslmeextvlpphhotyoutxbmkulbvyuokbuxsocurtftohkircrhsjqjubpnlwfmxuhjgaxyxjrynbllcrqvtobsbtqiraide1d522c48423e52e8f6796dc9f1b3125"
}
Не могу сообразить, как мне получить значение value поля tcy. Обращаюсь как к массиву, но всегда пустой результат.
Добавил исходный XML:
<urlinfo>
<url domain="https://yandex.ru">
<![CDATA[ / ]]>
</url>
<yaca url="https://yandex.ru"/>
<tcy rang="6" value="380000"/>
<topics></topics>
<textinfo></textinfo>
<r1>
uvyerddwhdmcirwatmowxmyxpktyjugqbnhwbufhgmfvugvofkvjbfkaykbtndygknieqitmtjousnxtjjospvednwjemswehrlo68dda255ecb7540b7f383df508b14e8f
</r1>
</urlinfo>
Спасибо!
Могу ошибиться с позицонированием, не видя xml, но значения атрибута получаются просто указанием их имени как для ассоциативного массива. Вот так
echo $xml->tcy['value']
Подробнее об использовании Simplexml
function xmlAttribute($object, $attribute){
if(isset($object[$attribute]))
return (string) $object[$attribute];
else
return null;
}
$tcyValue=xmlAttribute($xml->tcy->attributes(),"value")
Если структуру не напутал. Весь смысл в том, что к св-ву объекта @attributes напрямую нельзя обратиться. Один раз даже получалось через переменную вроде, типа:
$attributes="@attributes";
echo $xml->tcy->$attributes['value'];
Но потом как-то не заладилось, и я стал всегда использовать вариант выше.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники