Bir SimpleXMLElement öznitelikleri alınıyor

3 Cevap php

Nasıl nesne verilen ad değişkene almak istiyorum. $obj->@attributes['name']; Açıkçası işe yaramaz.

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

    [value] => Address
)

3 Cevap

Peki $obj['name']?

Örneğin, bu kod kısmını atarsak:

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

$xml = simplexml_load_string($str);

Ve bunlar:

var_dump($xml->a);

Alacak:

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

Ve

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

Alacak:

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

Ve casting this to a string :

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

Sonunda ne istediğini alır:

string 'test' (length=4)

yani, sadece niteliklerin değerlerini almak için dizi-erişimini kullanabilir.

Bir SimpleXMLElement için, dizi erişimi sözdizimi kullanarak özelliklerini erişebilirsiniz

$obj['name']

Alternatif olarak, yazabilirsiniz

$obj->attributes()->name

Ben sadece $obj['name'] inanıyorum.

Onların basic usage doc daha fazla bilgi için bkz.