博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML和YAML的区别与使用方法
阅读量:5291 次
发布时间:2019-06-14

本文共 3061 字,大约阅读时间需要 10 分钟。

最近处理一些配置文件,碰到了YAML格式的文件,因为之前没接触过此格式的文件,对于XML还比较熟悉一些。那么什么是YAML呢?它相比XML又有哪些优缺点呢?什么情况下用YAML呢?YAML怎么使用呢?在此做一个简单的总结吧。咱们就先从XML来说吧。

相信XML大家都比较熟知吧。下面是我从网络上摘取的概念性的东西,大家可以看一下。在此就不多说了。更多的说一些基本用法。

XML

概述:

可扩展标记语言 (Extensible Markup Language, 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则大小敏感,即区分大小写。

读写:

XML读写我所熟悉的有两种方式,一种是通过JavaScript来获取XML值,一个是用PHP来读取。XML的编写大家可以参考着手册,XML格式比较自由,可以自定义标签,但有一个原则就是要直观。下面直接列举出示例供大家测试,如有问题大家可以交流。

note.xml

1 
2
3
John
4
George
5
Don't forget the meeting!
6

xml_test.html

1  2  3  4   

5 To:

6 From:
7 Message: 8

9 29 30 31

xml_test.php

from;?>

YAML

简介:

YAML 作为一种比 XML 更为简单易读的序列化语言,正越来越多地被用于应用及配置文件的开发中。本文将简单介绍 YAML 的现状,YAML 与 XML 相比的优劣势,并通过实际的例子给出 YAML 的典型应用场景及其使用方法(涵盖 c/c++、ruby、PHP等)。

优势:

YAML的可读性好。

YAML和脚本语言的交互性好。

YAML使用实现语言的数据类型。

YAML有一个一致的信息模型。

YAML易于实现。

上面5条也就是XML不足的地方。同时,YAML也有XML的下列优点:

YAML可以基于流来处理;

YAML表达能力强,扩展性好。

总之,YAML试图用一种比XML更敏捷的方式,来完成XML所完成的任务。

更多的内容及规范参见http://www.yaml.org。

语法:

Structure通过空格来展示。Sequence里的项用"-"来代表,Map里的键值对用":"分隔.

这几乎就是所有的语法了.

比如……

一般YAML文件扩展名为.yaml。比如:john.yaml

1 name: John Smith 2  3 age: 37 4  5 spouse: 6  7 name: Jane Smith 8  9 age: 2510 11 children:12 13 - name: Jimmy Smith14 15 age: 1516 17 - name: Jenny Smith18 19 age 12

 

John今年37岁,有一个幸福的四口之家。两个孩子Jimmy 和Jenny活泼可爱。妻子Jane年轻美貌。

如果深入研究的话还可能发现一些社会问题^_^。

可见YAML的可读性是不错。

读写:

PHP对于YAML的读写,我推荐使用Spyc类读写YAML文件。

Spyc类文件下载地址:

 

Spyc只有2个类方法可供使用,一个是读取YAML文件,一个是生成YAML文件格式。下面从这个两种方法介绍下。

1 include('spyc.php');2 3 // 读取YAML文件,生成数组4 $yaml = Spyc::YAMLLoad('spyc.yaml');5 6 // 将数组转换成YAML文件7 $array['name']  = 'andy';8 $array['site'] = '21andy.com';9 $yaml = Spyc::YAMLDump($array);

 

php.ini读取ini的解析方式那种配置没法支持多维数组,So,我对yaml生成多维数组很感兴趣,主要想做一下配置文件,如下:

- { row: 0, col: 0, func: {tx: [0, 1]} }

转为php多维数组如下:

test.yaml(这个例子是我的DB配置文件,强烈推荐使用!

1 DB:2   default:3     dsn: 'mysql:dbname=test;host=127.0.0.1'4     user: 'root'5     pass: '111'6   session:7     dsn: 'mysql:dbname=test;host=127.0.0.1'8     user: 'root'9     pass: '111'

test.php

1 
";6 print_r($yaml);7 echo "";

PHP code

1 Array 2 ( 3     [DB] => Array 4         ( 5             [default] => Array 6                 ( 7                     [dsn] => mysql:dbname=test;host=127.0.0.1 8                     [user] => root 9                     [pass] => 11110                 )11 12             [session] => Array13                 (14                     [dsn] => mysql:dbname=test;host=127.0.0.115                     [user] => root16                     [pass] => 11117                 )18 19         )20 21 )

 

PHP生成YAML文件示例:

1 

 

 

概念性文字参考资料:

 

转载于:https://www.cnblogs.com/songchaoke/p/3376323.html

你可能感兴趣的文章
细读 php json数据和JavaScript json数据
查看>>
第五章 如何使用Burp Target
查看>>
Sprint阶段测试评分总结
查看>>
Servlet3.0新特性
查看>>
java内存溢出怎么解决
查看>>
JS对象以及"继承"
查看>>
Ewebeditor最新漏洞及漏洞大全
查看>>
socket计划编制的原则
查看>>
sqlite3经常使用命令&语法
查看>>
[leetcode] 309. Best Time to Buy and Sell Stock with Cooldown(medium)
查看>>
解决微信授权回调页面域名只能设置一个的问题 [php]
查看>>
数组去重一步到位
查看>>
HDU 4671 Backup Plan 构造
查看>>
linux下编译openjdk8
查看>>
【python】--迭代器生成器装饰器
查看>>
Pow(x, n)
查看>>
安卓当中的线程和每秒刷一次
查看>>
MySQL Proxy
查看>>
关于Vue的组件的通用性问题
查看>>
随机颜色值
查看>>