2017-02-25 103 views
0

我的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

回答

0

您可以直接使用數組語法訪問的元素:

$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