XML と YAML の使用方法

高洛峰
リリース: 2016-12-24 11:03:01
オリジナル
1500 人が閲覧しました

最近、いくつかの構成ファイルを処理していて、YAML 形式のファイルに遭遇しました。これまでこの形式のファイルに触れたことがないため、XML には比較的慣れています。では、YAML とは何でしょうか? XML と比較した場合の利点と欠点は何ですか? YAML はどのような場合に使用する必要がありますか? YAML の使い方をここで簡単にまとめてみましょう。 XML から始めましょう。

XML については誰もがよく知っていると思います。以下はインターネットから抜粋した概念的なものです。ここで言うことはあまりありません。基本的な使い方についてもう少し詳しく説明しましょう。
XML の概要:
拡張マークアップ言語 (XML)、電子ドキュメントをマークアップして構造化するために使用されるマークアップ言語で、ユーザーが独自にマークアップできるようにするマークアップ言語です。言語が定義されているソース言語。 XML は標準一般化マークアップ言語 (SGML) のサブセットであり、Web トランスポートに適しています。 XML は、アプリケーションやベンダーに依存せずに構造化データを記述および交換するための統一された方法を提供します。
形式の特徴:
XML は、Access、Oracle、SQL Server などのデータベースとは異なります。データベースは、データのインデックス作成、並べ替え、検索、関連する整合性など、より強力なデータ ストレージと分析機能を提供します。XML はデータのみを保存します。実際、XML と他のデータ表現の最大の違いは、非常にシンプルであることです。これは一見些細な利点ですが、これが XML のユニークな点です。 XML と HTML の設計の違いは次のとおりです。XML はデータの送信と保存を目的として設計されており、その焦点はデータのコンテンツです。 HTML はデータを表示するように設計されていますが、データの外観に重点が置かれています。 HTML は情報を表示するように設計されており、XML は情報を送信するように設計されています。
XML と HTML 構文の違い: すべての HTML タグがペアで出現する必要はありませんが、XML ではすべてのタグがペアで出現する必要があります。一方、HTML タグは大文字と小文字が区別されます。
読み取りと書き込み:
XML の読み取りと書き込みには 2 つの方法があり、1 つは JavaScript を使用して XML 値を取得する方法、もう 1 つは PHP を使用して読み取る方法です。 XML を記述するときはマニュアルを参照できます。XML 形式は比較的自由であり、タグをカスタマイズできますが、原則として直感的であることが重要です。質問がある場合は、誰でもテストできるように例を以下に示します。

note.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
  <from>John</from>
  <to>George</to>
  <message>Don&#39;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(&#39;note.xml&#39;); 
//输出XML文件中from属性,多个相同属性也就是数组的形式,可以用下标来取值
echo $xml->from;
?>
ログイン後にコピー

YAML はじめに:

YAML は、アプリケーションやアプリケーションの開発において、XML よりもシンプルで読みやすいシリアル化言語として使用されることが増えています。設定ファイル。この記事では、YAML の現状、XML と比較した YAML の長所と短所を簡単に紹介し、YAML の典型的なアプリケーション シナリオとその使用法 (C/C++、Ruby、PHP などをカバー) を実践例を交えて説明します。
利点:
YAML は可読性が優れています。
YAML とスクリプト言語は優れた対話性を備えています。
YAML は言語を実装するデータ型を使用します。
YAML には一貫した情報モデルがあります。
YAML は実装が簡単です。
上記の5項目はXMLの欠点です。同時に、YAML には XML の次の利点もあります:
YAML はストリームに基づいて処理できます。
YAML は強力な表現能力と優れたスケーラビリティを備えています。
つまり、YAML は、XML によって完了するタスクを完了するために、XML よりも機敏な方法を使用しようとします。
その他のコンテンツと仕様については、http://www.yaml.org を参照してください。
構文:
構造はスペースを介して表示されます。シーケンス内の項目は「-」で表され、マップ内のキーと値のペアは「:」で区切られます。
これがほぼすべての構文です。
たとえば...
一般に、YAML ファイルの拡張子は .yaml です。例: john.yaml

name: John Smith

age: 37

spouse:

name: Jane Smith

age: 25

children:

- name: Jimmy Smith

age: 15

- name: Jenny Smith

age 12
ログイン後にコピー

ジョンは 37 歳で、4 人家族の幸せな家庭を持っています。二人の子供、ジミーとジェニーは元気で可愛いです。彼の妻のジェーンは若くて美しいです。

深く勉強すると、社会問題も見つかるかもしれません^_^。
YAMLの可読性が良いことがわかります。
読み取りと書き込み:
PHP で YAML の読み取りと書き込みを行うには、Spyc クラスを使用して YAML ファイルの読み取りと書き込みを行うことをお勧めします。
Spyc クラス ファイルのダウンロード アドレス:
https://github.com/mustangostang/spyc/

Spyc で使用できるクラス メソッドは 2 つだけです。1 つは YAML ファイルを読み取ることで、もう 1 つは YAML ファイル形式を生成することです。以下に 2 つの方法を紹介します。

include(&#39;spyc.php&#39;);

// 读取YAML文件,生成数组
$yaml = Spyc::YAMLLoad(&#39;spyc.yaml&#39;);

// 将数组转换成YAML文件
$array[&#39;name&#39;]  = &#39;andy&#39;;
$array[&#39;site&#39;] = &#39;21andy.com&#39;;
$yaml = Spyc::YAMLDump($array);
ログイン後にコピー

php.ini は ini 解析メソッドを読み取り、構成は多次元配列をサポートできないため、yaml から多次元配列を生成することに非常に興味があり、主に次のような構成ファイルを作成したいと考えています。

以下のように PHP 多次元配列に変換します:

test.yaml (この例は私の DB 構成ファイルです。強くお勧めします!)

  - { row: 0, col: 0, func: {tx: [0, 1]} }
ログイン後にコピー

test.php

DB:
  default:
    dsn: &#39;mysql:dbname=test;host=127.0.0.1&#39;
    user: &#39;root&#39;
    pass: &#39;111&#39;
  session:
    dsn: &#39;mysql:dbname=test;host=127.0.0.1&#39;
    user: &#39;root&#39;
    pass: &#39;111&#39;
ログイン後にコピー

PHP で生成された YAML ファイルの例:

include('spyc.php') ;
//配列を YAML ファイル形式に変換します
$array['name'] = 'PHP Programmer's Notes';
$array['site'] = 'www.songchaoke.cn' ;
$yaml = Spyc ::YAMLDump($array);
//変換された YAML をファイルに書き込みます
$f = fopen('test2.yaml',"w+");
fwrite($f,$yaml) ;
fclose( $f);
[/code]

XML と YAML の使用に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート