Ajout d'attributs aux balises XML avec Regexp
Les documents XML sont des données structurées et bien formées qui ne peuvent pas être analysées de manière adéquate à l'aide d'expressions régulières. Il est essentiel d'exploiter les outils et bibliothèques spécifiques à XML pour modifier efficacement les données XML.
Éviter les expressions rationnelles pour la manipulation XML
L'utilisation d'expressions régulières pour manipuler des documents XML est fortement déconseillée. . XML n'est pas un langage standard et les modèles d'expressions régulières sont insuffisants pour naviguer dans sa structure complexe.
Utilisez des extensions XML
Au lieu de cela, il est recommandé d'utiliser les extensions XML de PHP pour modifier les documents XML. Prenons l'exemple suivant :
<code class="php">$xml = new SimpleXml(file_get_contents($xmlFile)); function process_recursive($xmlNode) { $xmlNode->addAttribute('attr', 'myAttr'); foreach ($xmlNode->children() as $childNode) { process_recursive($childNode); } } process_recursive($xml); echo $xml->asXML();</code>
Ce code utilise la classe SimpleXml pour charger le document XML. La fonction process_recursive parcourt ensuite l'arborescence XML, en ajoutant l'attribut souhaité à chaque nœud. Enfin, le XML modifié est imprimé en utilisant asXML.
Limitations de Regexp
Les expressions régulières ne parviennent pas à gérer les structures XML complexes, telles que :
<code class="xml"><?xml version="1.0" encoding='UTF-8'?> <html> <head> <!-- <meta> ... </meta> --> <script>//<![CDATA[ function load() {document.write('<tt>Test</tt>');} //]]></script> <title><![CDATA[Fancy <<SiteName>> [with Breadcrumbs] > in > title]]></title> </head> <body onload="load()"> <input type="submit" value="multiline button text" /> </body> </html></code>
Les modèles Regex sont incapables de traiter correctement ces éléments, ce qui entraîne un XML invalide.
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!