Cet article démontre la construction d'un serveur de proxy JSON PHP XML à JSON. Cette approche offre une solution pratique pour tirer parti des avantages de l'échange de données XML tout en simplifiant les interactions JavaScript côté client en utilisant le format JSON plus rationalisé.
Avantages clés:
comment cela fonctionne:
Le système comprend deux parties: un serveur proxy PHP et un client JavaScript.
url
). SimpleXMLElement
. json_encode
. Code php (xmlproxy.php):
Le script PHP utilise la suppression des erreurs (ini_set('display_errors', false)
) et un gestionnaire d'exception personnalisé (ReturnError()
) pour une gestion des erreurs robuste. Il récupère les données XML à l'aide de Curl, la convertit en JSON et renvoie le résultat. Si une erreur se produit pendant la récupération ou l'analyse, un indicateur d'erreur JSON est renvoyé.
<?php ini_set('display_errors', false); set_exception_handler('ReturnError'); $r = ''; $url = (isset($_GET['url']) ? $_GET['url'] : null); if ($url) { $c = curl_init(); curl_setopt_array($c, array( CURLOPT_URL => $url, CURLOPT_HEADER => false, CURLOPT_TIMEOUT => 10, CURLOPT_RETURNTRANSFER => true )); $r = curl_exec($c); curl_close($c); } if ($r) { echo json_encode(new SimpleXMLElement($r)); } else { ReturnError(); } function ReturnError() { echo '{"error":true}'; } ?>
Code javascript (proxy.html - exemple):
Le code JavaScript définit l'URL XML distante, fait une demande AJAX au proxy PHP et gère la réponse JSON. Il utilise une repli pour les navigateurs plus âgés dépourvus de natifs JSON.parse
.
// example XML feed var url = "http://domain.com/example.xml?status=123&date=2011-01-01"; // AJAX request var xhr = (window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP")); xhr.onreadystatechange = XHRhandler; xhr.open("GET", "xmlproxy.php?url=" + escape(url), true); xhr.send(null); // handle response function XHRhandler() { if (xhr.readyState == 4) { var json; if (JSON && JSON.parse) { json = JSON.parse(xhr.responseText); } else { eval("var json = " + xhr.responseText); } console.log(json); xhr = null; } }
Gestion des attributs XML:
La fonction json_encode
dans PHP gère les attributs XML en créant un objet @attributes
dans la sortie JSON.
Questions fréquemment posées (FAQ):
La section FAQ fournie offre un aperçu complet des différences XML et JSON, des techniques de conversion, de la gestion des erreurs et des stratégies d'optimisation dans le contexte de PHP.
N'oubliez pas de déployer xmlproxy.php
et votre fichier JavaScript (par exemple, proxy.html
) à un serveur Web avec PHP activé. Remplacez "http://domain.com/example.xml?status=123&date=2011-01-01"
par votre URL de source de données XML réelle.
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!