XML和YAML的使用方法
最近处理一些配置文件,碰到了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://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmls="http://www.w3.org/1999/xhtml">
<body>
<p>
To: <span id="to"></span><br />
From: <span id="from"></span><br />
Message: <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简介:
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
name: John Smith
age: 37
spouse:
name: Jane Smith
age: 25
children:
- name: Jimmy Smith
age: 15
- name: Jenny Smith
age 12
John今年37岁,有一个幸福的四口之家。两个孩子Jimmy 和Jenny活泼可爱。妻子Jane年轻美貌。
如果深入研究的话还可能发现一些社会问题^_^。
可见YAML的可读性是不错。
读写:
PHP对于YAML的读写,我推荐使用Spyc类读写YAML文件。
Spyc类文件下载地址:
https://github.com/mustangostang/spyc/
Spyc只有2个类方法可供使用,一个是读取YAML文件,一个是生成YAML文件格式。下面从这个两种方法介绍下。
include('spyc.php');
// 读取YAML文件,生成数组
$yaml = Spyc::YAMLLoad('spyc.yaml');
// 将数组转换成YAML文件
$array['name'] = 'andy';
$array['site'] = '21andy.com';
$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]
上一篇:编写xml没有代码提示的解决方法
栏 目:XML/RSS
下一篇:一个用xslt样式将xml解析为xhtml的类TransformBinder(兼容FF和IE7.0)
本文标题:XML和YAML的使用方法
本文地址:https://www.xiuzhanwang.com/a1/XML_RSS/11699.html
您可能感兴趣的文章
- 01-11WML学习之一概述和基本规则
- 01-11XML中显示HTML的小技巧
- 01-11WML学习之四 锚和任务
- 01-11使用Spry轻松将XML数据显示到HTML页的方法
- 01-11xml中的空格之完全解说
- 01-11xml文件的结构解读第1/2页
- 01-11得到XML文档大小的方法
- 01-11用xslt将xml解析成xhtml的代码
- 01-11XML解析错误:未组织好 的解决办法
- 01-11用Asp与XML实现交互的一个实例源码
阅读排行
本栏相关
- 01-11关于XSL - XSL教程
- 01-11WMLScript的语法基础
- 01-11选择模式 - XSL教程 - 2
- 01-11WML学习之五 显示表单
- 01-11WML学习之三 显示文本
- 01-11匹配模式 - XSL教程 - 4
- 01-11WML语法大全与相关介绍第1/3页
- 01-11XPath入门 - XSL教程 - 3
- 01-11测试模式 - XSL教程 - 5
- 01-11WAP建站WML语言语法基础教程第1/6页
随机阅读
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 04-02jquery与jsp,用jquery
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-11ajax实现页面的局部加载
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-10delphi制作wav文件的方法
- 01-10SublimeText编译C开发环境设置
- 01-10C#中split用法实例总结