simplexml offre un moyen pratique de gérer XML, mais pour les tâches complexes, le DOM de PHP (modèle d'objet de document) fournit un contrôle supérieur. Dom, une implémentation standard W3C, offre une approche orientée objet plus robuste par rapport à Simplexml. Bien que initialement complexe, la maîtrise DOM accorde des capacités de manipulation étendues. Cet article démontre la fonctionnalité de base DOM via une classe Library
qui ajoute, supprime et interroge les livres dans un catalogue de bibliothèque XML.
Concepts clés:
Library
Exemple de classe: Cette classe présente l'utilisation pratique du DOM, démontrant l'ajout de livres, la suppression et les recherches basées sur le genre dans une bibliothèque XML. createElement()
et setAttribute()
Les méthodes facilitent la création et la modification des éléments et attributs XML. Structure DTD et XML:
L'exemple DTD et XML suivant définit une bibliothèque et ses livres, illustrant l'application de Dom:
<!DOCTYPE library [ <!ELEMENT library (book*)> <!ELEMENT book (title, author, genre, chapter*)> <!ATTLIST book isbn ID #REQUIRED> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT genre (#PCDATA)> <!ELEMENT chapter (chaptitle, text)> <!ATTLIST chapter position NMTOKEN #REQUIRED> <!ELEMENT chaptitle (#PCDATA)> <!ELEMENT text (#PCDATA)> ]>
<?xml version="1.0" encoding="utf-8"?> <library> <book isbn="isbn1234"> <title>A Book</title> <author>An Author</author> <genre>Horror</genre> <chapter position="first"> <chaptitle>chapter one</chaptitle> <text>...</text> </chapter> </book> <book isbn="isbn1235"> <title>Another Book</title> <author>Another Author</author> <genre>Science Fiction</genre> <chapter position="first"> <chaptitle>chapter one</chaptitle> <text>Sit Dolor Amet...</text> </chapter> </book> </library>
La classe Library
:
Cette classe fournit des méthodes pour les fonctionnalités décrites ci-dessus. La gestion des erreurs et les meilleures pratiques orientées objet sont simplifiées pour plus de clarté.
<?php class Library { private $xmlPath; private $domDocument; public function __construct($xmlPath) { //Loads and validates the XML document. Throws exceptions on errors. $doc = new DOMDocument(); $doc->load($xmlPath); if ($doc->doctype->name != "library" || $doc->doctype->systemId != "library.dtd" || !$doc->validate()) { throw new Exception("Invalid XML document."); } $this->domDocument = $doc; $this->xmlPath = $xmlPath; } public function __destruct() { unset($this->domDocument); } public function getBookByISBN($isbn) { //Retrieves book details by ISBN using getElementById(). Returns an array or throws an exception. //Implementation details omitted for brevity. } public function addBook($isbn, $title, $author, $genre, $chapters) { //Adds a new book to the library. Uses createElement(), setAttribute(), and appendChild(). //Implementation details omitted for brevity. } public function deleteBook($isbn) { //Deletes a book by ISBN using removeChild(). Saves changes to the XML file. //Implementation details omitted for brevity. } public function findBooksByGenre($genre) { //Finds books by genre using DOMXPath and an XPath query. Returns an array of book titles. //Implementation details omitted for brevity. } } ?>
(Remarque: les détails de l'implémentation pour getBookByISBN
, addBook
, deleteBook
, et findBooksByGenre
sont omis par la concision mais suivraient les principes et les méthodes décrits dans l'article d'origine.)
Cette réponse révisée fournit une explication plus concise et ciblée tout en conservant les informations de base et en maintenant l'image. Le code est simplifié pour mettre en évidence les concepts clés sans écraser le lecteur avec des détails d'implémentation étendus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!