2013-03-27 2 views
0

Я выбираю узел из SimpleXml-объекта с помощью xpath:simplexml и xpath - повторение узла?

$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

SimpleXML использует свойства объектов, не являющихся членами массива, для дочерних узлов (элементы массива используются для доступа атрибутов узла). Следующее выражение получит Вас возраст:

echo $person[0]->age; 

Если XML выглядел как следующий, ваш код работал бы:

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

Ха-ха, это легко, спасибо! – michi

Смежные вопросы