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:
  1. <?xml version = '1.0' encoding = 'UTF-8' standalone = 'yes'?>
  2. <?xml-stylesheet href='http://alerts.weather.gov/cap/capatom.xsl' type='text/xsl'?>
  3.  
  4.  
  5. <text
  6. xmlns='http://schemas.datacontract.org/2004/07/BazeField.Historian.DataServices'
  7. xmlns:d4p1='http://schemas.datacontract.org/2004/07/System'
  8. >
  9. <item>
  10. <d4p1:Country>Polska</d4p1:Country>
  11. <d4p1:Region>Opolskie</d4p1:Region>
  12. <d4p1:City>Opole</d4p1:City>
  13. <d4p1:Registeredaddress>
  14. <d4p1:ApartmentNumber>1</d4p1:ApartmentNumber>
  15. <d4p1:HouseNumber>20</d4p1:HouseNumber>
  16. <d4p1:Street>Zmyślona</d4p1:Street>
  17. </d4p1:Registeredaddress>
  18. </item>
  19. <item>
  20. <d4p1:Country>Polska</d4p1:Country>
  21. <d4p1:Region>Mazowieckie</d4p1:Region>
  22. <d4p1:City>Warszawa</d4p1:City>
  23. <d4p1:Registeredaddress>
  24. <d4p1:ApartmentNumber>11</d4p1:ApartmentNumber>
  25. <d4p1:HouseNumber>14</d4p1:HouseNumber>
  26. <d4p1:Street>Pomylona</d4p1:Street>
  27. </d4p1:Registeredaddress>
  28. </item>
  29. </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
  1. $xml = simplexml_load_file("input.xml",null) or die("Error: Nie utworzono obiektu");
  2.  
  3. $capFields = $xml->item[1]->children('d4p1', true);
  4.  
  5.  
  6. echo "Kraj: " . (string) $capFields->Country . "\n";echo "</br>";
  7. echo "Region: " . (string) $capFields->Region . "\n";echo "</br>";
  8. echo "Miasto: " . (string) $capFields->City . "\n";echo "</br>";
  9. echo "Ulica: " . (string) $capFields->Registeredaddress->Street . "\n";echo "</br>";
  10. echo "Numer Domu: " . (string) $capFields->Registeredaddress->HouseNumber . "\n";echo "</br>";
  11. echo "=======================</br>";
  12.  
  13. foreach (($xml->item->children("d4p1", true)) as $cap) {
  14. echo "Kraj: " . (string) $cap->Country . "\n";echo "</br>";
  15. echo "Region: " . (string) $cap->Region . "\n";echo "</br>";
  16. echo "Miasto: " . (string) $cap->City . "\n";echo "</br>";
  17. echo "Ulica: " . (string) $cap->Registeredaddress->Street . "\n";echo "</br>";
  18. echo "Numer Domu: " . (string) $cap->Registeredaddress->HouseNumber . "\n";echo "</br>";
  19.  
  20. }