XML和YAML的使用方法

时间:2021-05-25

最近处理一些配置文件,碰到了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
复制代码 代码如下:
<?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://';
$yaml = Spyc::YAMLDump($array);

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

复制代码 代码如下:
- { row: 0, col: 0, func: {tx: [0, 1]} }

转为php多维数组如下:
test.yaml(这个例子是我的DB配置文件,强烈推荐使用!)
复制代码 代码如下:
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>";
print_r($yaml);
echo "</pre>";
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文件示例:
<?php
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]

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章