XML DOM με PHP

Ο ενσωματωμένος αναλυτής DOM καθιστά δυνατή την επεξεργασία εγγράφων XML στο PHP.

Τι είναι το DOM;

Ο W3C DOM παρέχει πρότυπα αντικειμένων για έγγραφα HTML και XML, καθώς και πρότυπα διεπαφών για πρόσβαση και χειρισμό αυτών των εγγράφων.

Ο W3C DOM διαιρείται σε διαφορετικά τμήματα (Core, XML και HTML) και διαφορετικά επίπεδα (DOM Level 1/2/3):

  • Core DOM - Ορίζει τα πρότυπα αντικειμένων για οποιοδήποτε δομημένο έγγραφο
  • XML DOM - Ορίζει τα πρότυπα αντικειμένων για έγγραφα XML
  • HTML DOM - Ορίζει τα πρότυπα αντικειμένων για έγγραφα HTML

If you wish to learn more about XML DOM, please visit our XML DOM Tutorial.

Αναλυτής XML

Για να διαβάσετε και να ενημερώσετε - να δημιουργήσετε και να χειριστείτε - ένα έγγραφο XML, χρειάζεστε αναλυτή XML.

Υπάρχουν δύο βασικά τύποι αναλυτών XML:

  • Αναλυτής δέντρου:Αυτός ο αναλυτής μετατρέπει το έγγραφο XML σε δομή δέντρου. Ανализuje ολόκληρο το έγγραφο και παρέχει API για πρόσβαση σε στοιχεία του δέντρου, όπως το DOM (Document Object Model).
  • Αναλυτής γεγονότων:Βλέπει το έγγραφο XML ως μια σειρά γεγονότων. Όταν συμβεί ένα συγκεκριμένο γεγονός, ο αναλυτής καλεί τις συνάρτησεις για να το χειριστεί.

Ο αναλυτής DOM είναι ένας αναλυτής βασισμένος στο δέντρο.

Δείτε το παρακάτω τμήμα του έγγραφου XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<from>Ιωάννης</from>

Το XML DOM βλέπει το XML ως μια δένδρο δομής:

  • Level 1: XML έγγραφο
  • Level 2: Ελémentο κορμού: <from>
  • Level 3: Εлемент χαρακτήρων: "Ιωάννης"

Εγκατάσταση

Οι λειτουργίες του DOM XML είναι μέρος του κέντρου του PHP. Μπορούν να χρησιμοποιηθούν χωρίς εγκατάσταση.

Αρχείο XML

Θα χρησιμοποιήσουμε το παρακάτω αρχείο XML στο παράδειγμα μας:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Γεώργιος</to>
<from>Ιωάννης</from>
<heading>Μνεία</heading>
<body>Μη ξεχάσετε τη συνάντηση!</body>
</note>

Φόρτωση και εκτύπωση XML

Χρειαζόμαστε την αρχικοποίηση του αναλυτή XML, τη φόρτωση του XML και την εκτύπωση του:

Example

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

The output of the above code is:

Γεώργιος Ιωάννης Μνεία Μη ξεχάσετε τη συνάντηση!

Αν δείτε τον κώδικα πηγής στη γραμμή εργασίας του περιηγητή σας, θα δείτε τα εξής HTML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Γεώργιος</to>
<from>Ιωάννης</from>
<heading>Μνεία</heading>
<body>Μη ξεχάσετε τη συνάντηση!</body>
</note>

In the above example, a DOMDocument object was created, and the XML from "note.xml" was loaded into this document object.

The saveXML() function puts the internal XML document into a string so that we can output it.

Loop XML

We need to initialize the XML parser, load the XML, and loop through all elements of the <note> element:

Example

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

The output of the above code is:

#text = 
to = George
#text = 
from = John
#text = 
heading = Reminder
#text = 
body = Don't forget the meeting!
#text =

In the above example, you saw empty text nodes between each element.

When XML is generated, it usually contains whitespace between nodes. XML DOM parsers treat them as ordinary elements, and if you are not careful, they can sometimes cause problems.

If you wish to learn more about XML DOM, please visit our XML DOM Tutorial.