Lekcja 16 – Obsługa plików JSON i XML w PHP

Obsługa plików JSON i XML w PHP – wprowadzenie

JSON (JavaScript Object Notation) i XML (Extensible Markup Language) to dwa popularne formaty do wymiany danych pomiędzy serwerami i aplikacjami. JSON jest prostszy, bardziej zwięzły i coraz częściej stosowany w nowoczesnych aplikacjach, natomiast XML jest bardziej złożony, ale wciąż używany, zwłaszcza w starszych systemach i w bardziej skomplikowanych strukturach danych. W tej lekcji nauczymy się, jak w PHP obsługiwać te dwa formaty, w tym jak odczytywać, przetwarzać i zapisywać dane w formatach JSON i XML.

Czym jest JSON?

JSON to lekki format wymiany danych, który jest łatwy do odczytania i zapisu zarówno dla ludzi, jak i dla maszyn. Używany jest szeroko w aplikacjach webowych, API oraz jako format do przesyłania danych między serwerami.

Przykład struktury JSON:

{
  "nazwa": "Jan Kowalski",
  "email": "jan.kowalski@example.com",
  "wiek": 30,
  "zainteresowania": ["programowanie", "sport"]
}

Obsługa JSON w PHP

PHP oferuje kilka funkcji do pracy z JSON, w tym:

  • json_encode(): Konwertuje dane PHP (tablice, obiekty) na format JSON.
  • json_decode(): Konwertuje dane JSON na tablice lub obiekty PHP.

Odczyt JSON z pliku

Najpierw odczytajmy dane JSON z pliku w PHP:

1. Załóżmy, że mamy plik dane.json z następującą zawartością:

{
  "nazwa": "Jan Kowalski",
  "email": "jan.kowalski@example.com",
  "wiek": 30,
  "zainteresowania": ["programowanie", "sport"]
}

2. Odczytajmy dane z pliku dane.json:

<?php
$json = file_get_contents('dane.json');
$dane = json_decode($json, true);

echo "Nazwa: " . $dane['nazwa'] . "<br>";
echo "Email: " . $dane['email'] . "<br>";
echo "Wiek: " . $dane['wiek'] . "<br>";
echo "Zainteresowania: " . implode(', ', $dane['zainteresowania']) . "<br>";
?>
Wyjaśnienie:
  • file_get_contents(): Odczytuje zawartość pliku.
  • json_decode($json, true): Konwertuje JSON na tablicę asocjacyjną PHP. Drugi parametr true oznacza, że wynik będzie tablicą. Jeśli pominiemy ten parametr, wynik będzie obiektem.

Zapisywanie danych do pliku JSON

Jeśli chcesz zapisać dane do pliku JSON, możesz użyć funkcji json_encode(). Oto przykład:

<?php
$dane = array(
  "nazwa" => "Jan Kowalski",
  "email" => "jan.kowalski@example.com",
  "wiek" => 30,
  "zainteresowania" => array("programowanie", "sport")
);

$json = json_encode($dane, JSON_PRETTY_PRINT);
file_put_contents('dane.json', $json);

echo "Dane zostały zapisane do pliku dane.json";
?>
Wyjaśnienie:
  • json_encode(): Konwertuje tablicę lub obiekt PHP na JSON. Opcja JSON_PRETTY_PRINT formatuje dane w sposób czytelny.
  • file_put_contents(): Zapisuje dane do pliku.

Praca z większymi strukturami JSON

Gdy pracujemy z większymi plikami JSON lub złożonymi strukturami danych, możemy potrzebować bardziej zaawansowanych metod przetwarzania. Możemy przekształcać dane, wybierać określone elementy, iterować po danych lub manipulować nimi.

Przykład złożonego pliku JSON:

{
  "klienci": [
    {
      "id": 1,
      "nazwa": "Jan Kowalski",
      "email": "jan.kowalski@example.com"
    },
    {
      "id": 2,
      "nazwa": "Anna Nowak",
      "email": "anna.nowak@example.com"
    }
  ]
}

Iteracja po danych JSON:

<?php
$json = file_get_contents('klienci.json');
$dane = json_decode($json, true);

foreach ($dane['klienci'] as $klient) {
  echo "ID: " . $klient['id'] . "<br>";
  echo "Nazwa: " . $klient['nazwa'] . "<br>";
  echo "Email: " . $klient['email'] . "<br><br>";
}
?>

Czym jest XML?

XML (Extensible Markup Language) to bardziej rozbudowany format wymiany danych, który jest często używany w starszych systemach oraz w systemach wymagających skomplikowanej struktury danych. XML jest bardziej formalny niż JSON, ponieważ wymaga określonego sposobu strukturyzowania danych za pomocą znaczników.

Przykład struktury XML:
<klient>
  <nazwa>Jan Kowalski</nazwa>
  <email>jan.kowalski@example.com</email>
  <wiek>30</wiek>
  <zainteresowania>
    <zainteresowanie>programowanie</zainteresowanie>
    <zainteresowanie>sport</zainteresowanie>
  </zainteresowania>
</klient>

Obsługa XML w PHP

PHP oferuje kilka sposobów pracy z XML, w tym:

  • SimpleXML: Najprostsze i najczęściej używane narzędzie do pracy z XML.
  • DOMDocument: Bardziej zaawansowane narzędzie do pracy z XML, które pozwala na manipulację strukturą dokumentu XML.
Odczyt danych XML za pomocą SimpleXML

SimpleXML pozwala w prosty sposób wczytać dane XML i przekształcić je w obiekt PHP.

Przykład odczytu pliku klient.xml:

<?php
$xml = simplexml_load_file('klient.xml');

echo "Nazwa: " . $xml->nazwa . "<br>";
echo "Email: " . $xml->email . "<br>";
echo "Wiek: " . $xml->wiek . "<br>";

echo "Zainteresowania: ";
foreach ($xml->zainteresowania->zainteresowanie as $zainteresowanie) {
  echo $zainteresowanie . " ";
}
?>
Wyjaśnienie:
  • simplexml_load_file(): Wczytuje plik XML i konwertuje go na obiekt SimpleXML.
  • Iteracja: Iterujemy po elementach XML, aby odczytać wszystkie zainteresowania.
Tworzenie pliku XML za pomocą SimpleXML

Możemy także tworzyć pliki XML w PHP. Oto przykład, jak stworzyć prosty plik XML:

<?php
$xml = new SimpleXMLElement('<klient></klient>');

$xml->addChild('nazwa', 'Jan Kowalski');
$xml->addChild('email', 'jan.kowalski@example.com');
$xml->addChild('wiek', 30);

$zainteresowania = $xml->addChild('zainteresowania');
$zainteresowania->addChild('zainteresowanie', 'programowanie');
$zainteresowania->addChild('zainteresowanie', 'sport');

$xml->asXML('klient.xml');

echo "Plik XML został utworzony.";
?>
Wyjaśnienie:
  • addChild(): Dodaje nowe elementy do struktury XML.
  • asXML(): Zapisuje strukturę XML do pliku.

Zaawansowana praca z XML przy użyciu DOMDocument

Jeśli potrzebujemy bardziej zaawansowanych operacji na XML, możemy skorzystać z klasy DOMDocument, która pozwala na pełną manipulację strukturą XML.

Przykład odczytu XML za pomocą DOMDocument:

<?php
$dom = new DOMDocument();
$dom->load('klient.xml');

$nazwa = $dom->getElementsByTagName('nazwa')->item(0)->nodeValue;
$email = $dom->getElementsByTagName('email')->item(0)->nodeValue;

echo "Nazwa: $nazwa<br>";
echo "Email: $email<br>";
?>

Przekształcanie danych między JSON i XML

W niektórych sytuacjach może być konieczne przekształcenie danych z formatu JSON do XML lub odwrotnie. Poniżej przykład konwersji danych JSON do XML.

Przykład konwersji JSON do XML:
<?php
$json = '{"nazwa":"Jan Kowalski","email":"jan.kowalski@example.com","wiek":30}';
$data = json_decode($json, true);

$xml = new SimpleXMLElement('<klient></klient>');
foreach ($data as $klucz => $wartosc) {
  $xml->addChild($klucz, htmlspecialchars($wartosc));
}

$xml->asXML('klient.xml');
echo "Dane JSON zostały przekonwertowane do XML.";
?>

Podsumowanie

W tej lekcji nauczyliśmy się, jak pracować z plikami JSON i XML w PHP. Omówiliśmy, jak odczytywać, przetwarzać i zapisywać dane w obu formatach, a także jak konwertować dane między tymi formatami. JSON i XML są szeroko stosowane w wymianie danych, a znajomość pracy z nimi jest kluczowa w nowoczesnym programowaniu webowym.

Gratulacje! Ukończyłeś ostatnią lekcję 16.
Mamy dla Ciebie małą ściągę czyli spis najważniejszych funkcji PHP:
spis najważniejszych funkcji PHP

Jeśli znajdziesz chwilę to podziel się swoja opinią o kursie w komentarzu w tym wpisie.


Spis Treści - darmowy kurs PHP

Wprowadzenie: Instalacja środowiska PHP
Lekcja 1: Podstawy składni PHP
Lekcja 2: Funkcje i instrukcje warunkowe w PHP
Lekcja 3: Pętle w PHP
Lekcja 4: Tablice w PHP
Lekcja 5: Dodatkowe podstawy funkcji w PHP
Lekcja 6: Praca z formularzami HTML w PHP
Lekcja 7: Obsługa plików w PHP
Lekcja 8: Sesje i ciasteczka w PHP
Lekcja 9: Podstawy operacji na bazach danych MySQL z PHP
Lekcja 10: Prepared Statements w PHP i bezpieczeństwo aplikacji
Lekcja 11: Zarządzanie użytkownikami – rejestracja, logowanie i autoryzacja w PHP
Lekcja 12: Wzorce projektowe w PHP – wprowadzenie do wzorca MVC
Lekcja 13: Zaawansowane techniki pracy z bazami danych w PHP
Lekcja 14: Testowanie jednostkowe w PHP z PHPUnit
Lekcja 15: Tworzenie i korzystanie z API RESTful w PHP
Lekcja 16: Obsługa plików JSON i XML w PHP

Dodatki
- Spis najważniejszych funkcji PHP

Jeśli chciałbyś być poinformowany o następnych kursach to zapisz się do naszego newslettera: