Доступ к @ атрибуту из SimpleXML [php]
Попробуй это
$xml->attributes()->Token
У меня проблема с доступом к разделу @attribute моего объекта SimpleXML. Когда я var_dump
весь объект, я получаю правильный вывод, и когда я var_dump
остальную часть объекта (вложенные теги), я получаю правильный вывод, но когда я следую документам и var_dump
$xml->OFFICE->{'@attributes'}
, я получаю пустой объект, несмотря на то, что первый var_dump
ясно показывает, что есть атрибуты для вывода.
Кто-нибудь знает, что я делаю неправильно здесь / как я могу это сделать?
Я использовал так много раз, чтобы получить @attributes
как @attributes
ниже, и это было немного дольше.
$att = $xml->attributes();
echo $att['field'];
Это должно быть проще, и вы можете получить атрибуты в следующем формате только сразу:
Стандартный способ - Атрибуты доступа к массиву (AAA)
$xml['field'];
Другие альтернативы:
Правильный и быстрый формат
$xml->attributes()->{'field'};
Неверные форматы
$xml->attributes()->field;
$xml->{"@attributes"}->field;
$xml->attributes('field');
$xml->attributes()['field'];
$xml->attributes->['field'];
Если вы ищете список этих атрибутов, XPath будет вашим другом
print_r($xml->xpath('@token'));
Это помогло мне преобразовать результат simplexml_load_file ($ file) в структуру JSON и декодировать его обратно:
$xml = simplexml_load_file("$token.xml");
$json = json_encode($xml);
$xml_fixed = json_decode($json);
$try1 = $xml->structure->{"@attributes"}['value'];
print_r($try1);
>> result: SimpleXMLElement Object
(
)
$try2 = $xml_fixed->structure->{"@attributes"}['value'];
print_r($try2);
>> result: stdClass Object
(
[key] => value
)