只得到第一个元素

问题描述:

我的XML文件,如(例如)的子元素:只得到第一个元素

<?xml version="1.0" encoding="UTF-8" ?> 
<bikes> 
    <bike> 
     <model>First</model> 
     <speedNumber>4</speedNumber> 
     <sizes>100</sizes> 
     <amount>100</amount> 
    </bike> 
    <bike> 
     <model>Second</model> 
     <speedNumber>3</speedNumber> 
     <sizes>300</sizes> 
     <amount>150</amount> 
    </bike> 
    <bike> 
     <model>Third</model> 
     <speedNumber>4</speedNumber> 
     <sizes>300</sizes> 
     <amount>300</amount> 
    </bike> 
</bikes> 

我怎样才能获得子元素仅前<bike>元素?
我想打印model=FirstspeedNumber=4 ...

<bike> 
    <model>First</model> 
    <speedNumber>4</speedNumber> 
    <sizes>100</sizes> 
    <amount>100</amount> 
</bike> 

我尝试这样做:

foreach ($xml->children(0) as $bikes) 
{ 
    foreach ($bikes->children() as $childs) 
    { 
    echo $childs->getName()."=".$childs ." "; 
    } 
    echo "<br>"; 
} 

但它不为我工作。
我该如何解决这个问题?

+1

你可以在'bike'元素只是访问和迭代然后在第一个https://eval.in/742822之后再打破。注意你的XML结构目前是无效的。你需要关闭'自行车'。 – chris85

您可以直接使用数组语法访问的元素:

$bikes->bike[0]->model 
$bikes->bike[0]->speedNumber 
... 

全码:

<?php 
$xml = <<<XML 
<?xml version="1.0" encoding="UTF-8" ?> 
<bikes> 
    <bike> 
     <model>First</model> 
     <speedNumber>4</speedNumber> 
     <sizes>100</sizes> 
     <amount>100</amount> 
    </bike> 
    <bike> 
     <model>Second</model> 
     <speedNumber>3</speedNumber> 
     <sizes>300</sizes> 
     <amount>150</amount> 
    </bike> 
    <bike> 
     <model>Third</model> 
     <speedNumber>4</speedNumber> 
     <sizes>300</sizes> 
     <amount>300</amount> 
    </bike> 
</bikes> 
XML; 

$bikes = new SimpleXMLElement($xml); 

echo $bikes->bike[0]->model . "\n"; 
echo $bikes->bike[0]->speedNumber . "\n"; 
echo $bikes->bike[0]->sizes . "\n"; 
echo $bikes->bike[0]->amount . "\n"; 

?> 

这里测试:http://codepad.org/yVAyoPtG