Доступ к @ атрибуту из SimpleXML [php]


Answers

Попробуй это

$xml->attributes()->Token
Question

У меня проблема с доступом к разделу @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
)