Récemment, lors du traitement de certains fichiers de configuration, je suis tombé sur des fichiers au format YAML. Comme je n'ai jamais été exposé à des fichiers dans ce format auparavant, je suis relativement familier avec XML. Alors, qu’est-ce que YAML ? Quels sont ses avantages et inconvénients par rapport à XML ? Quand faut-il utiliser YAML ? Comment utiliser YAML ? Faisons un bref résumé ici. Commençons par XML.
Je pense que tout le monde connaît XML. Vous trouverez ci-dessous des éléments conceptuels que j'ai extraits d'Internet. Pas grand chose à dire ici. Parlons davantage de quelques utilisations de base.
Aperçu de XML :
Extensible Markup Language (XML) est un langage de balisage utilisé pour marquer des documents électroniques afin de les rendre structurels. Il peut être utilisé pour marquer des données et définir des types de données. Un langage source qui définit son propre langage de balisage. XML est un sous-ensemble du langage SGML (Standard Generalized Markup Language) et convient parfaitement au transport Web. XML fournit une méthode unifiée pour décrire et échanger des données structurées indépendamment des applications ou des fournisseurs.
Fonctionnalités de format :
XML est différent des bases de données telles qu'Access, Oracle et SQL Server. Les bases de données offrent des capacités de stockage et d'analyse de données plus puissantes, telles que l'indexation des données, le tri, la recherche, la cohérence de la corrélation, etc. Seul XML est. pour stocker des données. En fait, la plus grande différence entre XML et les autres représentations de données est qu’il est extrêmement simple. Il s’agit d’un avantage apparemment trivial, mais c’est ce qui rend XML unique.
La différence de conception entre XML et HTML est la suivante : XML est conçu pour transmettre et stocker des données, et son objectif est le contenu des données. Bien que le HTML soit conçu pour afficher des données, il se concentre sur l'apparence des données. HTML est conçu pour afficher des informations, tandis que XML est conçu pour transmettre des informations.
La différence entre la syntaxe XML et HTML : toutes les balises HTML ne doivent pas nécessairement apparaître par paires, alors que XML exige que toutes les balises apparaissent par paires ; les balises HTML ne sont pas sensibles à la casse, tandis que XML est sensible à la casse.
Lecture et écriture :
Il existe deux méthodes que je connais en lecture et en écriture XML. L'une consiste à obtenir la valeur XML via JavaScript et l'autre consiste à la lire avec PHP. Vous pouvez vous référer au manuel lors de l'écriture de XML. Le format XML est relativement gratuit et vous pouvez personnaliser les balises, mais un principe est d'être intuitif. Des exemples sont répertoriés ci-dessous pour que tout le monde puisse les tester. Si vous avez des questions, vous pouvez communiquer.
note.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <note> <from>John</from> <to>George</to> <message>Don't forget the meeting!</message> </note>
xml_test.html
JavaScript
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmls="http://www.w3.org/1999/xhtml"> <body> <p> <b>To:</b> <span id="to"></span><br /> <b>From:</b> <span id="from"></span><br /> <b>Message:</b> <span id="message"></span> </p> <script type="text/javascript"> if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","note.xml",false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; document.getElementById("to").innerHTML= xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue; document.getElementById("from").innerHTML= xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue; document.getElementById("message").innerHTML= xmlDoc.getElementsByTagName("message")[0].childNodes[0].nodeValue; </script> </body> </html>
xml_test.php
<?php //创建DOM对象 $xml = new DOMDocument(); //读取XML文件 $xml = simplexml_load_file('note.xml'); //输出XML文件中from属性,多个相同属性也就是数组的形式,可以用下标来取值 echo $xml->from; ?>
YAML Introduction :
YAML, en tant que langage de sérialisation plus simple et plus facile à lire que XML, est de plus en plus utilisé dans le développement d'applications et de fichiers de configuration. Cet article présentera brièvement l'état actuel de YAML, les avantages et les inconvénients de YAML par rapport à XML, et donnera des scénarios d'application typiques de YAML et son utilisation (couvrant c/c, ruby, PHP, etc.) à travers des exemples pratiques.
Avantages :
YAML est facile à lire.
YAML et les langages de script ont une bonne interactivité.
YAML utilise des types de données qui implémentent le langage.
YAML a un modèle d'information cohérent.
YAML est facile à mettre en œuvre.
Les 5 éléments ci-dessus sont les défauts du XML. Dans le même temps, YAML présente également les avantages suivants de XML :
YAML peut être traité sur la base de flux ;
YAML a de fortes capacités d'expression et une bonne évolutivité.
En bref, YAML tente d'accomplir les tâches accomplies par XML de manière plus agile que XML.
Pour plus de contenu et de spécifications, veuillez consulter http://www.yaml.org.
Syntaxe :
La structure est affichée avec des espaces. Les éléments de la séquence sont représentés par "-" et les paires clé-valeur dans la carte sont séparées par ":".
C'est presque toute la syntaxe.
Par exemple...
Généralement, le fichier YAML l'extension est .yaml. Par exemple : john.yaml
name: John Smith age: 37 spouse: name: Jane Smith age: 25 children: - name: Jimmy Smith age: 15 - name: Jenny Smith age 12
John a 37 ans et a une famille heureuse de quatre personnes. Les deux enfants, Jimmy et Jenny, sont vifs et mignons. Sa femme Jane est jeune et belle.
Si vous étudiez en profondeur, vous pourrez également découvrir des problèmes sociaux ^_^.
On voit que la lisibilité de YAML est bonne.
Lecture et écriture :
Pour lire et écrire YAML en PHP, je recommande d'utiliser la classe Spyc pour lire et écrire des fichiers YAML.
Adresse de téléchargement du fichier de classe Spyc :
https://github.com/mustangostang/spyc/
Spyc n'a que 2 méthodes de classe disponibles, l'une consiste à lire les fichiers YAML et l'autre à générer le format de fichier YAML. Les deux méthodes sont présentées ci-dessous.
include('spyc.php'); // 读取YAML文件,生成数组 $yaml = Spyc::YAMLLoad('spyc.yaml'); // 将数组转换成YAML文件 $array['name'] = 'andy'; $array['site'] = '21andy.com'; $yaml = Spyc::YAMLDump($array);
La configuration de la méthode d'analyse utilisée par php.ini pour lire ini ne peut pas prendre en charge les tableaux multidimensionnels. Je suis donc très intéressé par yaml pour générer des tableaux multidimensionnels. un fichier de configuration, comme suit :
- { row: 0, col: 0, func: {tx: [0, 1]} }
Convertissez en tableau multidimensionnel php comme suit :
test.yaml (cet exemple est mon fichier de configuration DB, fortement recommandé !)
DB: default: dsn: 'mysql:dbname=test;host=127.0.0.1' user: 'root' pass: '111' session: dsn: 'mysql:dbname=test;host=127.0.0.1' user: 'root' pass: '111'
test.php
<?php include('spyc.php'); //读取YAML文件,生成数组 $yaml = Spyc::YAMLLoad('test.yaml'); echo "<pre class="brush:php;toolbar:false">"; print_r($yaml); echo ""; PHP code Array ( [DB] => Array ( [default] => Array ( [dsn] => mysql:dbname=test;host=127.0.0.1 [user] => root [pass] => 111 ) [session] => Array ( [dsn] => mysql:dbname=test;host=127.0.0.1 [user] => root [pass] => 111 ) ) )
Exemple de fichier YAML généré par PHP :
include('spyc.php');
//Convertir le tableau en Format de fichier YAML
$array['name'] = 'Notes du programmeur PHP';
$array['site'] = 'www.songchaoke.cn';
$yaml = Spyc::YAMLDump( $array);
/ /Écrivez le YAML converti dans le fichier
$f = fopen('test2.yaml',"w ");
fwrite($f,$yaml);
fclose($f);
[/code]
Pour plus d'articles liés à l'utilisation de XML et YAML, veuillez faire attention au site Web PHP chinois !