Получение атрибутов из SimpleXMLElement - PullRequest
1 голос
/ 10 ноября 2009

Как мне получить переменную имени, заданного объектом. $obj->@attributes['name'];, очевидно, не будет работать.

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [name] => Address
        )

    [value] => Address
)

Ответы [ 3 ]

3 голосов
/ 10 ноября 2009

А как же $obj['name']?

Например, если вы берете эту часть кода:

$str = <<<XML
<root>
    <a name="test">
        glop
    </a>
</root>
XML;

$xml = simplexml_load_string($str);

И эти:

var_dump($xml->a);

Получит вас:

object(SimpleXMLElement)[2]
  public '@attributes' => 
    array
      'name' => string 'test' (length=4)
  string '
        glop
    ' (length=18)

И

var_dump($xml->a['name']);

Получит вас:

object(SimpleXMLElement)[4]
  string 'test' (length=4)

И приведение к строке:

var_dump((string)$xml->a['name']);

Наконец-то получает то, что вы хотите:

string 'test' (length=4)

т.е. вы просто используете доступ к массиву для получения значений атрибутов.

1 голос
/ 10 ноября 2009

Для элемента SimpleXMLEle вы можете обращаться к атрибутам, используя синтаксис доступа к массиву

$obj['name']

Кроме того, вы можете набрать

$obj->attributes()->name
0 голосов
/ 10 ноября 2009

Я считаю, что это просто $obj['name'].

См. Их документ по основному использованию для получения дополнительной информации.

...