XML和YAML的使用方法

来源:脚本之家  责任编辑:小易  

Restler 3 - 很棒的api设计框架 产品特点 没有学习曲线 轻量级 灵活 高度可定制 大量

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

YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YA

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

安装一个pyyaml库。它会解析这个文件,变成一个类似json加载后的结构。字典,列表什么的。然后自

XML概述:

在小说《拜金女的恋爱方程式》中,YAML 是You are my love 的缩写。 来自YAML官

可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

配置文件就是具有规范化数据格式的变量保存文件,使用的数据格式可以是XML、YAML、JSON等等。其

格式特性:

XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是存储数据。事实上XML与其他数据表现形式最大的不同是:它极其简单,这是一个看上去有点琐细的优点,但正是这点使XML与众不同。

大家都知道女性一个人生不出孩子,需要有一个男人提供精子才行。但是养孩子大家却可以公认,女人一个人就能全干了。这是全社会对女性的歧视和不公平待遇!丧偶式育儿指家庭教育中一方的缺失,多指父亲角色。在中国大部分家庭中,父亲在孩子3岁之前的互动参与度低的可怜,几近为零。孩子3岁之前一般被母亲,奶奶或者姥姥承包了。为什么爸爸去哪儿会那么火,其实就是反映了中国孩子生活里缺少父亲的参与和存在。“丧偶式育儿”也跟女性自己有关系,是你自己惯着自己老公导致的!结婚之前不探讨家务分配的问题,生孩子之前又对于养孩子的问题就没有讨论清楚,就没有划分好责任,等孩子生出来,女人才发现进了无底洞。这又能怪谁?还是不是怪自己纵

XML与HTML的设计区别是:XML被设计为传输和存储数据,其焦点是数据的内容。而HTML被设计用来显示数据,其焦点是数据的外观。HTML旨在显示信息,而 XML旨在传输信息。

受邀回答,首先要说提问中“这种5分纸币已上涨2400倍”,这种提法不太准确的,此币如长号码版品相上佳者评级币按面值5分对比现在价值何止这点。虽然都是人民币但每一套人民币都存流通于不同的历史阶段,社会经济增长值也不同。这么比较是没有实际意义的,比如过去的1分硬币,现在如果1元买来,那按面值也可以说上涨了100倍;但这所谓的上涨了100倍可能要包含时间跨度因素,本身钱币的存世量,乃至当今经济状况,通货膨胀率甚至个人喜好等等,远非机械的对比面值可以得出的多少倍结论。举个例子比如津巴布韦那套现代世界最大面值货币中最大面值的纸币,与当今津巴布韦换钞后的流通纸币对比面值,那完全可以言之“贬值”了亿万倍,但

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>

    <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('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和YAML的区别与使用方法

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格式比较自由,可以自定义标签,但有一个原则就是要直观。下面直接列举出示例供大家测试,如有问题大家可以交流。

如何产生xml或yaml的图像列表

> - YAML可以基于流来处理

> - YAML表达能力强,扩展性好

YAML类似于XML的数据描述语言,语法比XML简单很多,YAML试图用一种比XML更敏捷的方式,来完成XML所完成的任务。

----------

##YAML vs JSON

JSON的语法其实是YAML的子集,大部分的JSON文件都可以被YAML的剖析器剖析。虽然大部分的数据分层形式也可以使用类似JSON的格式,不过YAML并不建议这样使用,除非这样编写能让文件可读性增加,更重要的是,YAML的许多扩展在JSON是找不到的,如:*进阶资料形态*、*关系锚点*、*字串不需要引号*、*映射资料形态会储存键值的顺序*等。

##YAML用途

###脚本语言

由于实现简单,解析成本很低,YAML特别适合在脚本语言中使用。列一下现有的语言实现:Ruby,Java,Perl,Python,PHP,OCaml,JavaScript,除了Java,其他都是脚本语言。

###序列化

YAML比较适合做序列化。因为它是宿主语言数据类型直转的。

###配置文件

YAML做配置文件也不错。写YAML要比写XML快得多(**无需关注标签或引号**),并且比ini文档功能更强。

###调试

由于其很强的阅读性,用于调试过程中dump出信息供分析也是一种比较方便的做法。

##YAML缺陷与不足

YAML没有自己的数据类型的定义,而是使用实现语言的数据类型。一个YAML文件,在不同语言中解析后得到的数据类型可能会不同,由于其兼容性问题,不同语言间的数据流转不建议使用YAML。

##YAML语法与范例

> - YAML使用可打印的Unicode字符,可使用UTF-8或UTF-16

> - 使用**空白字符**(不能使用<kbd>Tab</kbd>)分层,同层元素左侧对齐

> - 单行注解由井字号(<kbd> #</kbd> )开始,可以出现在行中任何位置

> - 每个清单成员以单行表示,并用短杠+空白(<kbd>- </kbd>)起始

> - 每个杂凑表的成员用冒号+空白(<kbd>: </kbd>)分开键和值

> - 杂凑表的键值可以用问号 (<kbd>?</kbd>)起始,表示多个词汇组成的键值

> - 字串一般不使用引号,但必要的时候可以用引号框住

> - 使用双引号表示字串时,可用倒斜线(<kbd>\</kbd>)进行特殊字符转义

> - 区块的字串用缩排和修饰词(非必要)来和其他资料分隔,有新行保留(使用符号<kbd>|</kbd>)或新行折叠(使用符号<kbd>></kbd>)两种方式

> - 在单一档案中,可用连续三个连字号(<kbd>---</kbd>)区分多个档案

> - 可选择性的连续三个点号(<kbd>...</kbd>)用来表示档案结尾(在流式传输时非常有用,不需要关闭流即可知道到达结尾处)

> - 重复的内容可使从参考标记星号 (<kbd>*</kbd>)复制到锚点标记(<kbd>&</kbd>)

> - 指定格式可以使用两个惊叹号 ( !! ),后面接上名称

```

receipt: Oz-Ware Purchase Invoice

date: 2007-08-06

customer:

given: Dorothy

family: Gale

items:

- part_no: A4786

descrip: Water Bucket (Filled)

price: 1.47

quantity: 4

- part_no: E1628

descrip: High www.hbbz08.com Heeled "Ruby" Slippers

price: 100.27

quantity: 1

bill-to: &id001

street: |

123 Tornado Alley

Suite 16

city: East Westville

state: KS

ship-to: *id001

specialDelivery: >

Follow the Yellow Brick

Road to the Emerald City.

Pay no attention to the

man behind the curtain.

...

```

这个文件的的顶层由七个键值组成:其中一个键值"items",是个两个元素构成的清单,清单中的两个元素同时也是包含了四个键值的杂凑表。

文件中重复的部分处理方式:使用锚点(&)和参考(*)标签将"bill-to"杂凑表的内容复制到"ship-to"杂凑表。也可以在文件中加入选择性的空行,以增加可读性。

##YAML的JAVA实现

YAML已经有了多种语言不少实现,详见[YAML官网](http://yaml.org/)。

一般YAML文件扩展名为.yaml,比如John.yaml,其内容为:

```

name: John Smith

age: 37

children:

- name: Jimmy Smith

age: 15

- name: Jenny Smith

age: 12

spouse:

name: Jane Smith

age: 25

```

xml在java项目中起到的作用具体是什么?

java项目中,xml文件一般都是用来存储一些配置信息

一般的编程, 多数用来存储配置信息 . 拿JDBC来说,可以把数据库连接字符串写到xml,如果要修改数据源,只需要改xml就可以了,没必要再去重新编译java文件,而且,这些配置信息放在一起,别的人来读你写的代码的时候,就方便了很多

框架中的xml , 除了配置信息 , 还可以写一些对应关系,其实也是一种配置信息 .拿struts来说,xml配置的是页面url对应后台java类(action)的关系,在配置和修改的时候,只需要改一个xml文件就可以了,没必要一个个的查找java代码

java项目完成之后,每个模块应该都是独立的,模块之间的关系都可以使用xml来进行维护,spring就是这样的一个框架

一个好的项目,需要有良好的可拓展性,如果把所有的逻辑关系还有配置信息都写入代码中,会使程序的可拓展性变差,为了解决这个问题,xml就可以对整个项目进行调度(spring)

还有使用xml作为数据储存,不过用起来很少,多数还是用来存放配置信息

yaml中如何输入#作为正常字符

其实就可以认为是一种新的数据格式,类似xml,json那般。

可以用于:配置文件,日志文件,内部消息传递,跨语方数据共享,对象持久等。

yaml使用需要什么python库

Python三种内建数据结构——列表、元组字典依:列表: 列表list处理组序项目数据结构即列表存储序列项目, Python每项目间用逗号割 列表项目应该包括括号Python知道指明列表看列表字符串数字即包含种类

  • 本文相关:
  • php操作xml
  • 在java中使用dom4j解析xml(示例代码)
  • php 修改、增加xml结点属性的实现代码
  • js跨浏览器实现将字符串转化为xml对象的方法
  • 为何xml对web服务很重要
  • xhtml 1.0:标记新的开端
  • 使用php dom-xml创建和解析xml文件
  • 使用正则表达式进行xml数据验证
  • xsl简明教程(4)在服务器端的实现
  • xml简易教程之一
  • xml中的空格之完全解说
  • 包含中文字符的url编码问题
  • xml入门的常见问题(一)
  • xml简易教程之四
  • XML和YAML的区别与使用方法
  • 如何产生xml或yaml的图像列表
  • xml在java项目中起到的作用具体是什么?
  • yaml中如何输入#作为正常字符
  • yaml使用需要什么python库
  • Restler 怎么设置post
  • .yml是什么文件
  • Python如何调用yaml文件中的参数来执行ssh命令
  • YAML 什么意思?有什么含义?
  • 软件开发中,什么叫“配置文件”或“配置管理文件”,这两个术语是只适用于研发吗?
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved