SimpleXML dan @ niteliğini erişme

6 Cevap php

Ben SimpleXML nesnesinin @attribute bölümüne erişerek bir sorun yaşıyorum. Ne zaman var_dump tüm nesne ben takip zaman, ben doğru çıktı almak, ve ben var_dump nesnesi (iç içe etiketleri) geri kalanı, ben doğru çıktı almak, ama ne zaman docs ve var_dump $xml->OFFICE->{'@attributes'}, ben ilk var_dump açıkça çıkışına nitelikler olduğunu gösteriyor olmasına rağmen, boş bir nesne olsun.

Herkes ben bu işi nasıl yapabiliriz / yanlış burada ne yapıyorum biliyor musun?

6 Cevap

Sen bir XML düğümü () işlevini özelliklerini çağırarak bir XML öğesinin özelliklerini alabilirsiniz. Daha sonra işlevin dönüş değerini var_dump olabilir.

More info at php.net http://php.net/simplexmlelement.attributes

O sayfadan örnek kod:

$xml = simplexml_load_string($string);
foreach($xml->foo[0]->attributes() as $a => $b) {
    echo $a,'="',$b,"\"\n";
}

Bu deneyin

$xml->attributes()->Token
$xml = <<<XML
<root>
<elem attrib="value" />
</root>
XML;

$sxml = simplexml_load_string($xml);
$attrs = $sxml->elem->attributes();
echo $attrs["attrib"]; //or just $sxml->elem["attrib"]

SimpleXMLElement::attributes kullanın.

Gerçek, SimpleXMLElement olan get_properties handler lies big time. There's no property named "@attributes", so you can't do $sxml->elem->{"@attributes"}["attrib"].

Sadece yapabilirsiniz:

echo $xml['token'];

Eğer olsa bu özelliklerin bir listesini arıyorsanız, XPath arkadaşınız olacak

print_r($xml->xpath('@token'));

I @attributes gibi aşağıda almak için pek çok kez daha önce kullanılan ve biraz daha uzundu.

$att = $xml->attributes();
echo $att['field'];

Daha kolay olmalı ve her seferinde sadece tek biçimi aşağıdaki nitelikleri alabilirsiniz:

Right & Quick Format

$xml->attributes()->{'field'};

Wrong Formats

$xml->attributes()->field;
$xml->{"@attributes"}->field;
$xml->attributes('field');
$xml->attributes()['field'];
$xml->attributes->['field'];