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.
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;
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>
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!