Witam,
Mam problem z pobraniem danych z XML, a następnie wyświetlenie ich w PHP w petli foreach.
Przy strukturze xml bez namespace bez problemu mogę te dane wyświetlić poprzez pętlę.
Przykładowy plik xml:
<?xml version = '1.0' encoding = 'UTF-8' standalone = 'yes'?>
<?xml-stylesheet href='http://alerts.weather.gov/cap/capatom.xsl' type='text/xsl'?>
<text
xmlns='http://schemas.datacontract.org/2004/07/BazeField.Historian.DataServices'
xmlns:d4p1='http://schemas.datacontract.org/2004/07/System'
>
<item>
<d4p1:Country>Polska</d4p1:Country>
<d4p1:Region>Opolskie</d4p1:Region>
<d4p1:City>Opole</d4p1:City>
<d4p1:Registeredaddress>
<d4p1:ApartmentNumber>1</d4p1:ApartmentNumber>
<d4p1:HouseNumber>20</d4p1:HouseNumber>
<d4p1:Street>Zmyślona</d4p1:Street>
</d4p1:Registeredaddress>
</item>
<item>
<d4p1:Country>Polska</d4p1:Country>
<d4p1:Region>Mazowieckie</d4p1:Region>
<d4p1:City>Warszawa</d4p1:City>
<d4p1:Registeredaddress>
<d4p1:ApartmentNumber>11</d4p1:ApartmentNumber>
<d4p1:HouseNumber>14</d4p1:HouseNumber>
<d4p1:Street>Pomylona</d4p1:Street>
</d4p1:Registeredaddress>
</item>
</text>
Pojedyńcze dane oczywiście udaje mi się pobrać, problem jest z pętlą foreach.
Próbowałem już różnych zapisów, ale niestety nie działają.
Obecnie plik wygląda tak jak poniżej (oczywiście w pętli foreach są błędy)
Jak zrobić by w petli foreach zostały przetworzone wszystkie dane z xml
$xml = simplexml_load_file
("input.xml",null) or
die("Error: Nie utworzono obiektu");
$capFields = $xml->item[1]->children('d4p1', true);
echo "Kraj: " . (string
) $capFields->Country . "\n";echo
"</br>"; echo "Region: " . (string
) $capFields->Region . "\n";echo
"</br>"; echo "Miasto: " . (string
) $capFields->City . "\n";echo
"</br>"; echo "Ulica: " . (string
) $capFields->Registeredaddress->Street . "\n";echo
"</br>"; echo "Numer Domu: " . (string
) $capFields->Registeredaddress->HouseNumber . "\n";echo
"</br>"; echo "=======================</br>";
foreach (($xml->item->children("d4p1", true)) as $cap) {
echo "Kraj: " . (string
) $cap->Country . "\n";echo
"</br>"; echo "Region: " . (string
) $cap->Region . "\n";echo
"</br>"; echo "Miasto: " . (string
) $cap->City . "\n";echo
"</br>"; echo "Ulica: " . (string
) $cap->Registeredaddress->Street . "\n";echo
"</br>"; echo "Numer Domu: " . (string
) $cap->Registeredaddress->HouseNumber . "\n";echo
"</br>";
}