Maison  >  Article  >  développement back-end  >  Application PHP : utiliser des fonctions pour convertir XML au format JSON

Application PHP : utiliser des fonctions pour convertir XML au format JSON

WBOY
WBOYoriginal
2023-06-19 23:48:081779parcourir

Avec le développement continu de la technologie Internet, le traitement des données est devenu un élément indispensable du développement d'applications Internet. XML et JSON sont également devenus les deux formats d'échange de données les plus couramment utilisés. Cependant, au cours du processus de développement de l'application, nous avons constaté que PHP prend en charge l'analyse du format XML par défaut, mais que sa prise en charge du format JSON est relativement limitée. Par conséquent, cet article expliquera comment utiliser PHP pour écrire des fonctions permettant de convertir des données au format XML en données au format JSON.

1. Aperçu des exigences

Dans le processus de développement d'applications actuel, nous devons convertir les données au format XML en données au format JSON pour réaliser le partage, l'échange et d'autres fonctions de données. Plus précisément, nous devons analyser les données XML d'origine, les convertir en un tableau associatif PHP, puis convertir le tableau en données au format JSON et le transmettre au client.

2. Solution

Afin de répondre aux exigences ci-dessus, nous devons mettre en œuvre les trois étapes suivantes :

1. Analyser les données XML

Utilisez la fonction intégrée de PHP simplexml_load_string() pour convertir les données au format XML en objets PHP. (objet ). La syntaxe de cette fonction est la suivante :

mixed simplexml_load_string ( string $data [, string $class_name = "SimpleXMLElement" [, int $options = 0 [, string $ns = "" [, bool $is_prefix = false ]]]] )

Parmi eux, le paramètre $data représente la chaîne XML qui doit être analysée, et la valeur de retour est l'objet analysé. Lors de l'analyse des données XML, nous devons garantir l'exactitude des données. Par conséquent, la fonction simplexml_load_string() peut être encapsulée dans une fonction check_xml() pour vérifier si les données XML sont légales.

function check_xml($xml_str)
{
    $obj = @simplexml_load_string($xml_str);
    if ($obj === false) {
        return false;
    }
    return true;
}

2. Convertir les données XML en tableau PHP

Après avoir analysé les données au format XML, nous devons les convertir en tableau PHP. Afin de convertir un objet en tableau, vous pouvez utiliser la fonction objectToArray() en PHP.

function objectToArray($object)
{
    $arr = is_object($object) ? get_object_vars($object) : $object;
    if (is_array($arr)) {
        return array_map(__FUNCTION__, $arr);
    } else {
        return $arr;
    }
}

Combinée avec la fonction check_xml() précédente, la fonction convert_xml_to_array() peut être encapsulée comme suit :

function convert_xml_to_array($xml_str)
{
    $obj = @simplexml_load_string($xml_str);
    if ($obj === false) {
        return false;
    }
    $arr = objectToArray($obj);
    return $arr;
}

3. Convertir le tableau PHP en données au format JSON

La dernière étape consiste à convertir le tableau PHP au format JSON. données. En PHP, vous pouvez utiliser la fonction json_encode() pour convertir facilement des tableaux PHP en données au format JSON. La syntaxe est la suivante :

string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )

Le paramètre $value représente le tableau PHP qui doit être converti en données au format JSON, et la valeur de retour est une chaîne au format JSON. Afin de faciliter l'encapsulation, nous pouvons définir la fonction convert_array_to_json() comme suit :

function convert_array_to_json($arr)
{
    $json = json_encode($arr, JSON_UNESCAPED_UNICODE);
    return $json;
}

3. Code complet

En résumé, nous pouvons encapsuler les trois étapes ci-dessus dans une fonction complète convert_xml_to_json(), le code est le suivant :

function convert_xml_to_json($xml_str)
{
    $arr = convert_xml_to_array($xml_str);
    if ($arr === false) {
        return false;
    }
    $json = convert_array_to_json($arr);
    return $json;
}

function check_xml($xml_str)
{
    $obj = @simplexml_load_string($xml_str);
    if ($obj === false) {
        return false;
    }
    return true;
}

function convert_xml_to_array($xml_str)
{
    $obj = @simplexml_load_string($xml_str);
    if ($obj === false) {
        return false;
    }
    $arr = objectToArray($obj);
    return $arr;
}

function convert_array_to_json($arr)
{
    $json = json_encode($arr, JSON_UNESCAPED_UNICODE);
    return $json;
}

function objectToArray($object)
{
    $arr = is_object($object) ? get_object_vars($object) : $object;
    if (is_array($arr)) {
        return array_map(__FUNCTION__, $arr);
    } else {
        return $arr;
    }
}

4. Exemples d'utilisation

Les exemples d'utilisation sont les suivants :

$xml_str = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<xml>
  <name>张三</name>
  <age>20</age>
  <gender>男</gender>
  <education>
    <degree>学士</degree>
    <school>清华大学</school>
  </education>
  <education>
    <degree>硕士</degree>
    <school>北京大学</school>
  </education>
</xml>
XML;
if (check_xml($xml_str)) {
    $json = convert_xml_to_json($xml_str);
    echo "JSON: {$json}";
} else {
    echo "XML数据不合法";
}

Les résultats d'exécution sont les suivants :

JSON: {"name":"u5f20u4e09","age":"20","gender":"u7537","education":[{"degree":"u5b66u58eb","school":"u6e05u534eu5927u5b66"},{"degree":"u7855u58eb","school":"u5317u4eacu5927u5b66"}]}

5. Résumé

Dans cet article, nous avons présenté comment utiliser PHP pour écrire des fonctions pour convertir du XML. formater les données au format JSON. En utilisant simplexml_load_string() pour analyser les données XML, objectToArray() pour convertir des objets PHP en tableaux PHP et json_encode() pour convertir des tableaux PHP en données au format JSON, nous pouvons rapidement et facilement implémenter la conversion de format de données et développer des applications pratiques. être appliqué pour améliorer l’évolutivité et la facilité d’utilisation du programme.

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