simplexml和xpath - 回显节点?

时间:2013-03-27 23:09:30

标签: php simplexml

我通过xpath

从simplexml-Object中选择一个节点
$x="<root>
    <person>
    <name>Julie</name>
    <age>37</age>   
    <rating>5</rating>
    </person>
    <person>
    <name>Greta</name>
    <age>56</age>
    <rating>7</rating>
    </person>
    <person>
    <name>Kerstin</name>
    <age>38</age>
    <rating>10</rating>
    </person>   
</root>";

$xml = simplexml_load_string($x);

$person = $xml->xpath("//person[name='Greta']");

foreach ($person[0] as $k => $v) 
    echo "$k => $v<br />";

这是按预期输出的......

name => Greta<br />age => 56<br />rating => 7<br />    

然后我做...

echo $person[0]['age'];

输出:

好吧,没事!为什么呢?

直播@ http://3v4l.org/Voalu

1 个答案:

答案 0 :(得分:1)

SimpleXML对子节点使用对象属性而不是数组成员(数组成员用于访问节点属性)。以下表达式将为您提供年龄:

echo $person[0]->age;

如果XML看起来如下所示,那么您的代码就可以运行:

<root>
    <person age="37">
       <name>Julie</name>
       <rating>5</rating>
    </person>
    ...