Maison > développement back-end > tutoriel php > Comment imprimer joliment la sortie XML en PHP ?

Comment imprimer joliment la sortie XML en PHP ?

Patricia Arquette
Libérer: 2024-11-28 22:00:17
original
414 Les gens l'ont consulté

How to Pretty Print XML Output in PHP?

Comment imprimer du XML en PHP

Lorsque vous travaillez avec XML en PHP, vous pouvez rencontrer des problèmes de formatage. Si vous n'obtenez pas les caractères d'indentation et d'espacement souhaités lors de l'affichage de XML dans le navigateur, cet article fournira une solution pour vous aider à générer des données XML bien formatées.

Énoncé du problème

Ce qui suit Le code PHP crée un document XML mais produit une sortie mal formatée :

$doc = new DomDocument('1.0');
// create root node
$root = $doc->createElement('root');
$root = $doc->appendChild($root);
$signed_values = array('a' => 'eee', 'b' => 'sd', 'c' => 'df');
// process one row at a time
foreach ($signed_values as $key => $val) {
    // add node for each row
    $occ = $doc->createElement('error');
    $occ = $root->appendChild($occ);
    // add a child node for each field
    foreach ($signed_values as $fieldname => $fieldvalue) {
        $child = $doc->createElement($fieldname);
        $child = $occ->appendChild($child);
        $value = $doc->createTextNode($fieldvalue);
        $value = $child->appendChild($value);
    }
}
// get completed xml document
$xml_string = $doc->saveXML();
echo $xml_string;
Copier après la connexion

Solution

Pour être bien formaté Sortie XML, vous pouvez définir les paramètres suivants pour l'objet DomDocument :

$doc->preserveWhiteSpace = false;
$doc->formatOutput = true;
Copier après la connexion

En définissant préservationWhiteSpace sur false, les caractères d'espacement sont supprimés de la sortie. Définir formatOutput sur true active l'indentation des éléments XML.

Vous pouvez également définir ces paramètres juste après la création du DomDocument :

$doc = new DomDocument('1.0');
$doc->preserveWhiteSpace = false;
$doc->formatOutput = true;
Copier après la connexion

La sortie dans les deux cas fournira du XML correctement formaté :

<?xml version="1.0"?>
<root>
  <error>
    <a>eee</a>
    <b>sd</b>
    <c>df</c>
  </error>
  <error>
    <a>eee</a>
    <b>sd</b>
    <c>df</c>
  </error>
  <error>
    <a>eee</a>
    <b>sd</b>
    <c>df</c>
  </error>
</root>
Copier après la connexion

Remarque supplémentaire

Si vous souhaitez personnaliser davantage l'indentation, vous pouvez utilisez une approche basée sur les expressions régulières :

$xml_string = preg_replace('/(?:^|\G)  /um', "\t", $xml_string);
Copier après la connexion

Cela remplacera les doubles espaces par des tabulations.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal