Maison > interface Web > js tutoriel > Comment créer un serveur de proxy XML à JSON dans PHP

Comment créer un serveur de proxy XML à JSON dans PHP

William Shakespeare
Libérer: 2025-03-02 00:13:09
original
799 Les gens l'ont consulté

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é.

How to Create an XML to JSON Proxy Server in PHP

Avantages clés:

  • JavaScript simplifié: Évite les complexités de la manipulation directe de XML en javascript.
  • Échange de données XML: maintient l'utilisation de XML pour l'échange de données entre divers systèmes.
  • Traitement JSON efficace: Le traitement côté client est plus rapide et plus facile avec JSON.
  • Accès au domaine croisé: permet d'accéder aux services Web sur différents domaines, une limitation souvent rencontrée avec des solutions purement javascript.
  • Filtrage de données (potentiel): Le serveur proxy peut potentiellement être étendu pour filtrer les données inutiles, réduisant la taille de la charge utile.

comment cela fonctionne:

Le système comprend deux parties: un serveur proxy PHP et un client JavaScript.

  1. Client JavaScript: Envoie une demande ajax au proxy PHP, y compris l'URL XML cible en tant que paramètre GET (url).
  2. PHP Proxy Server:
    • utilise Curl pour récupérer les données XML de l'URL spécifiée.
    • analyse le XML en utilisant SimpleXMLElement.
    • convertit le XML analysé en JSON en utilisant json_encode.
    • Renvoie les données JSON au client JavaScript. Comprend la gestion des erreurs pour empêcher les erreurs de PHP d'atteindre le client.

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}';
}
?>
Copier après la connexion

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;
    }
}
Copier après la connexion

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!

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