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
Patricia Arquetteoriginal
2024-11-28 22:00:17436parcourir

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;

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;

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;

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>

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);

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!

Déclaration:
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