XML과 YAML을 사용하는 방법

高洛峰
풀어 주다: 2016-12-24 11:03:01
원래의
1366명이 탐색했습니다.

최근 일부 구성 파일을 처리할 때 YAML 형식의 파일을 발견했습니다. 이전에 이 형식의 파일에 노출된 적이 없기 때문에 XML에 비교적 익숙합니다. 그렇다면 YAML이란 무엇입니까? XML에 비해 장점과 단점은 무엇입니까? YAML은 언제 사용해야 합니까? YAML 사용 방법을 간략하게 요약해 보겠습니다. XML부터 시작해 보겠습니다.

XML은 다들 익숙하실 거라 믿습니다. 아래는 제가 인터넷에서 추출한 개념적인 내용입니다. 여기서는 별로 할 말이 없습니다. 몇 가지 기본적인 사용법에 대해 더 이야기해 보겠습니다.
XML 개요:
XML(Extensible Markup Language)은 전자 문서를 구조화하기 위해 표시하는 데 사용되는 마크업 언어입니다. 데이터를 표시하고 데이터 유형을 정의하는 데 사용할 수 있습니다. 사용자는 자체 마크업 언어를 정의하는 소스 언어입니다. XML은 SGML(Standard Generalized Markup Language)의 하위 집합이며 웹 전송에 매우 적합합니다. XML은 응용 프로그램이나 공급업체에 관계없이 구조화된 데이터를 설명하고 교환하기 위한 통합된 방법을 제공합니다.
형식 기능:
XML은 Access, Oracle 및 SQL Server와 같은 데이터베이스와 다릅니다. 데이터베이스는 데이터 인덱싱, 정렬, 검색, 상관 일관성 등과 같은 보다 강력한 데이터 저장 및 분석 기능을 제공합니다. 데이터를 저장합니다. 실제로 XML과 다른 데이터 표현의 가장 큰 차이점은 매우 단순하다는 것입니다. 이는 사소해 보이는 장점이지만 이것이 XML을 독특하게 만드는 것입니다.
XML과 HTML의 디자인 차이점은 다음과 같습니다. XML은 데이터를 전송하고 저장하도록 설계되었으며 데이터의 내용에 중점을 둡니다. HTML은 데이터를 표시하도록 설계되었지만 데이터의 모양에 중점을 둡니다. HTML은 정보를 표시하도록 설계되었으며 XML은 정보를 전송하도록 설계되었습니다.
XML과 HTML 구문의 차이점: 모든 HTML 태그가 쌍으로 표시될 필요는 없지만 XML에서는 모든 태그가 쌍으로 표시되어야 합니다. HTML 태그는 대소문자를 구분하지 않지만 XML은 대소문자를 구분합니다.
읽고 쓰기:
XML을 읽고 쓰는 데에는 익숙한 두 가지 방법이 있습니다. 하나는 JavaScript를 통해 XML 값을 얻는 것이고, 다른 하나는 PHP로 읽는 것입니다. 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를 참조하세요.
구문:
구조는 공백으로 표시됩니다. Sequence의 항목은 "-"로 표시되고, Map의 키-값 쌍은 ":"으로 구분됩니다.
이것이 거의 모든 구문입니다.
예를 들어...
일반적으로 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
로그인 후 복사

John은 37세이며 행복한 4인 가족을 두고 있습니다. 지미와 제니 두 아이는 활기차고 귀엽습니다. 그의 아내 Jane은 젊고 아름답습니다.
깊이 공부하다 보면 사회적인 문제도 발견할 수도 있어요^_^.
YAML의 가독성이 좋다고 볼 수 있습니다.
읽고 쓰기:
PHP에서 YAML을 읽고 쓰려면 Spyc 클래스를 사용하여 YAML 파일을 읽고 쓰는 것이 좋습니다.
Spyc 클래스 파일 다운로드 주소:
https://github.com/mustangotang/spyc/

Spyc에는 2가지 클래스 메소드만 사용할 수 있는데, 하나는 YAML 파일을 읽는 것이고 다른 하나는 YAML 파일 형식을 생성합니다. 아래 두 가지 방법을 소개합니다.

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에 관심이 많습니다.

  - { row: 0, col: 0, func: {tx: [0, 1]} }
로그인 후 복사

다음과 같이 PHP 다차원 배열로 변환합니다:
test.yaml(이 예는 제 DB 구성 파일이므로 적극 권장합니다!)

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;
로그인 후 복사

test.php

<?php
include(&#39;spyc.php&#39;);
//读取YAML文件,生成数组
$yaml = Spyc::YAMLLoad(&#39;test.yaml&#39;);
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 ) ) )
로그인 후 복사

PHP로 생성된 YAML 파일의 예:
include('spyc.php');
//배열을 다음으로 변환 YAML 파일 형식
$array[' name'] = 'PHP 프로그래머 메모';
$array['site'] = 'www.songchaoke.cn';
$yaml = Spyc::YAMLDump( $array);
/ /변환된 YAML을 파일에 쓰기
$f = fopen('test2.yaml',"w+");
fwrite($f,$yaml);
fclose($f);
[/code]

XML 및 YAML 사용과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!