2017-02-25 3 views
0

Mein XML-Datei wie (zum Beispiel) ist:Erste nur die untergeordneten Elemente des ersten Elements

<?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> 

Wie kann ich nur untergeordnete Elemente für das erste <bike> Element bekommen?
Ich möchte model=First, speedNumber=4 ...

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

ich dieses versucht drucken:

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

Aber es funktioniert nicht für mich.
Wie kann ich dieses Problem lösen?

+1

Sie könnten nur Zugang Iterierte über die 'bike' Elemente und dann brechen Sie nach dem ersten, https://eval.in/742822. Beachten Sie, dass Ihre XML-Struktur derzeit ungültig ist. Sie müssen die 'Fahrräder' schließen. – chris85

Antwort

0

Sie können die Elemente direkt zugreifen Array-Syntax:

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

Voll Code:

<?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"; 

?> 

hier getestet: http://codepad.org/yVAyoPtG

Verwandte Themen