DOM XML PHP

Wbudowany parser DOM umożliwia przetwarzanie dokumentów XML w PHP.

Co to jest DOM?

W3C DOM dostarcza standardowe zestawy obiektów dla dokumentów HTML i XML oraz standardowe interfejsy do dostępu i operacji na tych dokumentach.

W3C DOM jest dzielony na różne części (Core, XML i HTML) i różne poziomy (DOM Level 1/2/3):

  • Core DOM - Zdefiniowane standardowe zestawy obiektów dla dowolnych strukturyzowanych dokumentów
  • XML DOM - Zdefiniowane standardowe zestawy obiektów dla dokumentów XML
  • HTML DOM - Zdefiniowane standardowe zestawy obiektów dla dokumentów HTML

Jeśli chcesz dowiedzieć się więcej o XML DOM, odwiedź naszą Kurs XML DOM.

Przetwarzanie XML

Aby czytać i aktualizować - tworzyć i przetwarzać - dokument XML, potrzebujesz parsera XML.

Istnieją dwa podstawowe typy parserów XML:

  • Parser oparty na drzewie:Ten parser konwertuje dokument XML na strukturę drzewiastą. Analizuje całe dokument, i dostarcza API do dostępu do elementów w drzewie, np. dokumentu obiektowego (DOM).
  • Parser oparty na wydarzeniach:Traktuje dokument XML jako serię wydarzeń. Kiedy zdarzenie się dzieje, parser wywołuje funkcje do jego przetwarzania.

Parser DOM jest parserem opartym na drzewie.

Zobacz poniższy fragment dokumentu XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<from>John</from>

XML DOM traktuje XML jako strukturę drzewiastą:

  • Poziom 1: Dokument XML
  • Poziom 2: Korzeń: <from>
  • Poziom 3: Element tekstowy: "John"

Instalacja

Funkcje parsera DOM XML są częścią rdzenia PHP. Nie wymaga instalacji, aby można je było używać.

Plik XML

W naszym przykładzie użyjemy poniższego pliku XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

Ładowanie i wyświetlanie XML

Musimy zainicjalizować parser XML, załadować XML i go wyświetlić:

Przykład

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
print $xmlDoc->saveXML();
?>

Wyjście powyższego kodu:

George John Reminder Don't forget the meeting!

Jeśli spojrzysz na kod źródłowy w oknie przeglądarki, zobaczysz poniższy HTML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

W powyższym przykładzie utworzono obiekt DOMDocument i załadowano do niego XML z pliku "note.xml".

Funkcja saveXML() umieszcza wewnętrzny dokument XML w jednej zmiennej, tak że możemy go wyjść.

Przejście przez XML

Musimy zainicjalizować parser XML, załadować XML i przejść przez wszystkie elementy <note>:

Przykład

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item)
  {
  print $item->nodeName . " = " . $item->nodeValue . "<br />";
  }
?>

Wyjście powyższego kodu:

#text = 
to = George
#text = 
from = John
#text = 
heading = Przypomnienie
#text = 
body = Nie zapomnij o spotkaniu!
#text =

W powyższym przykładzie widzisz puste węzły tekstowe między każdym elementem.

Kiedy XML jest generowany, zazwyczaj zawiera białe znaki między węzłami. Parser XML DOM traktuje je jako zwykłe elementy, a jeśli ich nie zauważysz, mogą powodować problemy.

Jeśli chcesz dowiedzieć się więcej o XML DOM, odwiedź naszą Kurs XML DOM.