xml.class.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. /**
  3. * Classe `xml`
  4. *
  5. * Cette classe fournit des outils pour manipuler et afficher des données XML de manière formatée.
  6. *
  7. * Fonctionnalités principales :
  8. * - Affichage d'une chaîne XML formatée et colorée pour une meilleure lisibilité.
  9. * - Application de styles CSS pour améliorer la présentation des données XML.
  10. *
  11. * @package Core\Class
  12. */
  13. class xml
  14. {
  15. /**
  16. * Affiche une chaîne XML formatée et colorée.
  17. *
  18. * Cette méthode utilise DOMDocument pour formater le XML et applique des styles CSS
  19. * pour une meilleure lisibilité dans un navigateur web.
  20. *
  21. * @param string $_string La chaîne XML à afficher.
  22. * @return void
  23. */
  24. public static function print(string $_string)
  25. {
  26. // Utiliser DOMDocument pour rendre le XML lisible
  27. $dom = new DOMDocument();
  28. $dom->preserveWhiteSpace = false;
  29. $dom->formatOutput = true;
  30. $dom->loadXML($_string);
  31. // Obtenir le XML formaté
  32. $formatted_xml = htmlspecialchars($dom->saveXML());
  33. // Affichage du XML formaté avec du style CSS pour colorer les éléments XML
  34. header('Content-Type: text/html; charset=UTF-8');
  35. echo "<html><head>";
  36. // Ajouter du CSS pour colorer les éléments XML et gérer l'enroulement
  37. echo "
  38. <style>
  39. pre {
  40. font-family: 'Courier New', Courier, monospace;
  41. background-color: #f4f4f4;
  42. padding: 15px;
  43. border: 1px solid #ddd;
  44. white-space: pre-wrap; /* Permet l'enroulement du texte */
  45. word-wrap: break-word; /* Force l'enroulement sur les longs mots */
  46. overflow-wrap: break-word; /* Gère les débordements du texte */
  47. }
  48. .tag { color: #007700; } /* Couleur des balises */
  49. .attribute { color: #0000ff; } /* Couleur des attributs */
  50. .value { color: #dd0000; } /* Couleur des valeurs d'attribut */
  51. </style>
  52. ";
  53. echo "</head><body>";
  54. // Remplacer les éléments pour les colorier avec du CSS
  55. $formatted_xml = preg_replace('/(&lt;\/?)(\w+)(.*?&gt;)/', '<span class="tag">$1$2</span>$3', $formatted_xml);
  56. $formatted_xml = preg_replace('/(\w+)="(.*?)"/', '<span class="attribute">$1</span>="<span class="value">$2</span>"', $formatted_xml);
  57. // Afficher le XML formaté et coloré
  58. echo "<pre>" . $formatted_xml . "</pre>";
  59. echo "</body></html>";
  60. }
  61. }