当前位置:

首页 > 编程开发 > XML和YAML的使用方法

XML和YAML的使用方法

YAML相比XML具有可读性强、与脚本语言交互好、语法简洁等优势,通过空格和缩进实现结构,适合配置文件场景。XML侧重于数据存储与传输,标签要求严格成对且区分大小写。YAML继承XML优点,并以更敏捷方式完成相同任务。

最近处理配置文件时,遇到了YAML格式的文件。之前对XML比较熟悉,但YAML还是头一回接触。那么,YAML到底是什么?相比XML,它有哪些优缺点?什么场景下更适合用YAML?又该怎么用呢?下面系统地梳理一下,先从XML说起。

XML概述

XML(可扩展标记语言)大家应该都不陌生。它是一种用于标记电子文件、使其具有结构性的标记语言,可以用来标记数据、定义数据类型,甚至允许用户自定义标签。XML是标准通用标记语言(SGML)的子集,非常适合在Web上传输数据——它提供了一种统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

格式特性

XML与Access、Oracle、SQL Server这类数据库不同:数据库提供了数据索引、排序、查找、一致性等强力的数据存储和分析能力,而XML仅仅是存储数据。事实上,XML与其他数据表现形式最大的区别在于它的“极其简单”——这听起来像是个琐碎的优点,但正是这一点让XML与众不同。

XML与HTML的设计目标也截然不同:XML被设计为传输和存储数据,焦点是数据的内容;HTML被设计为显示数据,焦点是数据的外观。HTML旨在展示信息,而XML旨在传输信息。语法上也有明显差异:HTML的标签不要求全部成对出现,XML则严格要求所有标记必须成对;HTML不区分大小写,XML则大小写敏感。

读写方式

XML的读写,常用的有两种方式:一种是通过Ja vaScript获取XML值,另一种是用PHP来读取。编写XML时可以参考手册,格式比较自由,可以自定义标签,但原则是“直观”。下面直接给出示例,供读者测试。

note.xml



  John
  George
  Don't forget the meeting!

xml_test.html - Ja vaScript 方式




  

To:


From:


Message:

xml_test.php - PHP 方式

from;
?>

YAML简介

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

优势

YAML的优势非常明显:

  • 可读性好
  • 与脚本语言的交互性好
  • 使用实现语言的数据类型
  • 有一致的信息模型
  • 易于实现

这5条恰好也是XML的不足。同时,YAML也继承了XML的以下优点:

  • 可以基于流处理
  • 表达能力强,扩展性好

说白了,YAML就是想用一种更敏捷的方式,来完成XML所承担的任务。

语法

YAML的语法极其简洁:结构通过空格来展示,序列(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类。Spyc类只有两个主要方法:一个读取YAML文件,一个生成YAML格式字符串。下载地址:https://github.com/mustangostang/spyc/

基本用法示例:

include('spyc.php');

// 读取YAML文件,生成数组
$yaml = Spyc::YAMLLoad('spyc.yaml');

// 将数组转换成YAML格式
$array['name']  = 'andy';
$array['site'] = '21andy.com';
$yaml = Spyc::YAMLDump($array);

PHP的ini配置解析方式无法支持多维数组,而YAML可以轻松搞定。下面是一个多维数组的YAML示例:

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

转为PHP多维数组后,结构清晰。再来看一个实际数据库配置文件的例子(强烈推荐使用):

test.yaml

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 读取该文件:

";
print_r($yaml);
echo "
"; ?>

输出结果:

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文件的示例:


以上便是YAML从概念到实践的完整梳理。如果对配置文件的格式有更高要求,YAML绝对是值得投入的选择。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
编程开发 YAML
相关文章 更多
简单了解XML 树结构
简单了解XML 树结构

XML文档采用树形结构,由根元素出发,包含层层嵌套的子元素,形成父子或同胞关系。每个元素可承载文本和属性,标签名称自描述,便于理解,广泛用于数据交换与存储。

怎样打开XML文件?xml文件如何打开?
怎样打开XML文件?xml文件如何打开?

XML是可扩展标记语言,用于标记数据并定义数据类型,适合网络传输和跨平台数据交换。它语法简单,要求标签成对出现、正确嵌套且属性必须加引号。可用记事本或Excel等工具打开,Excel提供多种导入方式。

XML解析错误:未组织好 的解决办法
XML解析错误:未组织好 的解决办法

在Windows上运行ASP.NET网站时,有时你会遇到一个让人摸不着头脑的怪现象:XML文件本身完整无缺,放在Linux下一切正常,可一换到Windows+IIS的环境,浏览器就报错。比如Firefox 2.0会提示“XML解析错误:未组织好”,位置指向页面第一行第二个字符,而IE则显示“无法显示

一个用xslt样式将xml解析为xhtml的类TransformBinder(兼容FF和IE7.0)
一个用xslt样式将xml解析为xhtml的类TransformBinder(兼容FF和IE7.0)

针对XML文件自动生成无法修改的问题,有效开发了TransformBinder类。该类通过XmlDom构造函数统一创建文档对象模型,利用transformXSLT函数实现XSLT到XHTML的转换,兼容IE和Firefox等主流浏览器。同时,封装了registerAction与bind方法,支持外部关联XML与XSLT文件,便于代码复用。

powerbuilder(pb)中 xml的应用一例
powerbuilder(pb)中 xml的应用一例

在PowerBuilder9.0中处理订单与明细的XML导出时,需要先拆分两个数据窗口并分别定义模板,然后通过设置‘StartDetail’属性来控制循环输出,子报表引用的明细数据窗口会忽略顶层节点,最终生成符合指定格式的XML文件内容。

asp下利用xml打包网站文件
asp下利用xml打包网站文件

将整个网站文件夹打包为一个XML文件,上传至虚拟主机后运行解包程序即可完成部署。核心原理是利用XML存储二进制数据。文件数量多时效率需实际验证,此法适合小文件或简化FTP上传场景。

气象 XML 数据源应用程序开发指南-内容目录
气象 XML 数据源应用程序开发指南-内容目录

本指南系统覆盖从账号获取到数据规则的完整流程,详述搜索、气象数据请求与响应、错误处理、资源、数据规则、链接、属性及标志使用等核心内容与注意事项,为天气应用开发人员提供全面系统的参考。

XML CDATA是什么?
XML CDATA是什么?

XML解析器默认解析所有文本,遇到特殊字符(如、&)需转义,否则导致解析错误。若未禁用外部实体,可能引发XXE安全漏洞,加载恶意文件或泄露数据,建议严格配置输入验证并禁用DTD。

让 Asp 与 XML 交互
让 Asp 与 XML 交互

使用ASP创建XMLDOM对象,加载XML数据文件与XSL样式文件,调用transformNode方法将样式规则应用到数据,输出HTML内容,实现数据与表现分离,便于后期独立修改与维护。

XML 取得元素的字符数据
XML 取得元素的字符数据

串接样式表是一个包含安排XML文件中元素相关指令的档案。因为你已经利用XML创造了自己的元素,浏览器并不知道如何适当地显示这些元素。 列表9-3中的script程序使用每个子元素(TITLE、AUTHOR、BINDING、PAGES与PRICE)的text属性,作为获取元素字符数据的快捷方法。比如,

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
Postman macOS版
Postman macOS版
Mac

Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。

Docker Desktop macOS版
Docker Desktop macOS版
Mac

Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。

Android Studio macOS版
Android Studio macOS版
Mac

Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。

WINDOWS 更多
PixPix 网页版
PixPix 网页版
Windows

PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。

Postman Windows版
Postman Windows版
Windows

Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等

Docker Desktop Windows版
Docker Desktop Windows版
Windows

Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。