У меня проблема с доступом к @attribute
разделу моего объекта SimpleXML. Когда я var_dump
обрабатываю весь объект, я получаю правильный результат, а когда я var_dump
остальной объект (вложенные теги), я получаю правильный результат, но когда я следую документам и var_dump
$xml->OFFICE->{'@attributes'}
, я получаю пустой объект, несмотря на то, что первый var_dump
ясно показывает, что есть атрибуты для вывода.
Кто-нибудь знает, что я здесь делаю неправильно / как я могу заставить эту работу?
Ответы:
Вы можете получить атрибуты элемента XML, вызвав функцию attributes () на узле XML. Затем вы можете var_dump возвращаемое значение функции.
Дополнительная информация на php.net http://php.net/simplexmlelement.attributes
Пример кода с этой страницы:
источник
$b
чтоSimpleXMLElement
объект будет такимprint_r
иvar_dump
даст вам странные вещи. Вы можете преобразовать его как строку (или что угодно), чтобы обойти это.Попробуй это
источник
attributes()
объект, соответствующий правильному тегу в вашем XML. Например, если у вас есть,<root><tag attr="a">b</tag></root>
то вам нужно сделать$xml->tag->attributes()->attr
для доступа к нему.Раньше я использовал так много раз,
@attributes
как показано ниже, и это было немного дольше.Это должно быть проще, и вы можете получить атрибуты следующего формата только сразу:
Стандартный способ - атрибуты доступа к массиву (AAA)
Другие альтернативы:
Правое и быстрое форматирование
Неправильные форматы
источник
$xml->attributes()->{'field'}
,$xml->attributes()->field
и$f='field'; $xml->attributes()->$f;
то же самое. Не вижу причин, почему один формат правильный, а другой - нет.Используйте
SimpleXMLElement::attributes
.По правде говоря,
get_properties
обработчик SimpleXMLElement врет. Нет свойства с именем "@attributes", поэтому вы не можете этого сделать$sxml->elem->{"@attributes"}["attrib"]
.источник
get_properties
обработчик). Очень интересно.Вы можете просто сделать:
источник
Если вы ищете список этих атрибутов, XPath будет вашим другом.
источник
Это помогло мне преобразовать результат simplexml_load_file ($ file) в структуру JSON и декодировать его обратно:
источник
К сожалению, у меня есть уникальная сборка (на данный момент застрявшая с Gentoo) PHP 5.5, и я обнаружил, что
было единственным решением, которое сработало. Я пробовал все методы Бора, описанные выше, включая формат «Правильный и быстрый», и все они потерпели неудачу.
Тот факт, что это самый простой формат, является плюсом, но мне не нравилось думать, что я сошел с ума, пробуя все форматы, которые, по словам других, работали.
Njoy, какой он стоит (я уже говорил об уникальной сборке?).
источник