$@对xml解析意味着什么


What the $@ means for xml-parsing?

我想访问XML文件

var_dump($xml);

显示

class SimpleXMLElement#3013 (10) {
  public $@attributes =>
   array(1) {
   'rank' =>
   string(1) "1"
   }
  public $name =>
   string(13) "name of the man"

我可以以的身份访问该男子的姓名

$feed = simplexml_load_file($url);
foreach ($feed as $xml){
  $xml->name;// access here

然而我不知道如何访问$@属性中的"rank"

$xml->attributes->rank

不起作用。

我认为这是因为$@属性和$name是不同的。

我不知道$@是什么意思。。。

SimpleXML被设计成可以访问XML节点,就好像它们是对象属性一样。@字符不是有效的XML节点名,因此,@被用作"attributes"属性(包含节点属性的属性)的前缀。这样可以确保属性永远不会与名为"attributes"的子节点发生冲突。

要访问属性,请尝试以下方法之一:

  1. 按数组索引:

    $xml['rank']
    
  2. 通过SimpleXMLElement::attributes()方法:

    $xml->attributes()->rank