C#与yaml解析

YAML 官方网站称 YAML 是"一种所有编程语言可用的友好的数据序列化标准"。YAML Ain‘t Markup Language,和GNU一样,YAML是一个递归着说"不"的名字。不同的是,GNU对UNIX说不,YAML说不的对象是XML。

YAML不是XML。

为什么不是XML呢?因为:

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

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

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

总之,YAML试图用一种比XML更敏捷的方式,来完成XML所完成的任务。更多的内容及规范参见http://www.yaml.org

YamlDotNet---YAML的C# 实现

YAML已经有了不少实现,详细的实现列表参见http://www.yaml.org/download.html。列表中并没有.net的实现, 其实.NET也有 YamlDotNet(http://aaubry.net/pages/yamldotnet.html)是YAML的C#实现。YAML文件格式主要集中于空格缩进的概念,它用于指出数据的层次结构 而不是使用XML嵌套标记或JSON的大括号({})和方括号([]),实际上,它是JSON的一个超集,因此,在使用的时候,你可能需要采用JSON风格的语法来跳出空格流,它的创始人将其形容为 为所有编程语言提供人性化的数据序列化标准 ,以我的经验来看,其重点是人性化, 这篇文章Human readable and editable config files with YAML (http://blog.codeinside.eu/2015/02/09/yaml-dot-net ) 简要介绍了YamlDotNet。

YamlDotNet官方网站上以下示例的列表可以帮助您入门。

Deserializing反序列化

YAML 文档转换为对象图。

•Serializing 序列化

将对象转换为其 YAML 表示形式。

Loading YAML 流

说明如何加载使用表示模型的 YAML。

在反序列化期间 Validating

通过操纵的反序列化器节点列表,很容易将行为添加到反序列化程序。此示例演示当他们被反序列化如何验证对象。

Deserializing 多个文档

解释如何从流中加载多个 YAML 文件。

YAML转换为 JSONJSON 转换为YAML ,使用 Json.NET 的 JSON 转换 YAML 显示如何将 YAML 文件转换为 JSON。

时间: 2024-08-04 15:28:19

C#与yaml解析的相关文章

Go 处理yaml类型的配置文件

先说一下,这里用到了很多关于反射类型的功能,可能刚开始看代码,如果对反射不熟悉的可能会不是非常清晰,但是同时也是为了更好的理解golang中的反射,同时如果后面想在代码中可以直接从我的git地址get:go get github.com/pythonsite/config_yaml直接上代码: // 可以用于处理读yaml格式的配置文件,同时也可以用于理解golang中的反射 package config_yaml import ( "strings" "errors&quo

Go语言之读取yaml配置文件,转换成struct结构,json形式输出

1.例子1 1.1.yaml文件内容如下: host: localhost:3306 user: root pwd: 123456 dbname: test 1.2.代码如下: //将yaml文件,转换成对象,再转换成json格式输出 package main import ( "encoding/json" "fmt" "gopkg.in/yaml.v2" "io/ioutil" ) //定义conf类型 //类型里的属性,

yaml常用语法一

yaml中语法  #  注释行     使用一个固定的缩进风格表示数据层结构关系,一般使用两个空格 :每个冒号后面一定要有一个空格(以冒号结尾不需要空格,表示文件路径的模版可以不需要空格) - 表示列表项,使用一个短横杠加一个空格.多个项使用同样的缩进级别作为同一个列表的一部分 !! 使用两个感叹号强制转换数据类型(对象) 应用示例:whatyPlatformConfig.yaml 解析后数据: YAML有以下基本规则: 1.大小写敏感 2.使用缩进表示层级关系 3.禁止使用tab缩进,只能使用

YAML简要入门

这是一篇简单的YAML入门教程,目的是让你知晓什么YAML,以及YAML的基础语法.方便接下来学习如何使用Golang解析YAML.如果想获得更多YAML的知识,请查看http://yaml.org YAML是层级结构的,如果你没有接触过xml.json这类文件话,你可以将YAML看做一个目录. 作为目录自然有子目录和子文件,YAML使用缩进表示这种包含关系(也就是空格,不要使用Tab键缩进,有些YAML解析可能无法正常处理Tab). 空格可以使用任意个,但是缩进相同个数空格的字段会被视为同一层

Drupal Core 8 PECL YAML 反序列化任意代码执行漏洞(CVE-2017-6920

漏洞背景:2017年6月21日,Drupal官方发布了一个编号为CVE-2017- 6920 的漏洞,影响为Critical.这是Drupal Core的YAML解析器处理不当所导致的一个远程代码执行漏洞,影响8.x的Drupal Core. 漏洞复现:1.打开网页先登录一个管理员账号.2.访问 http://你的ip:8080/admin/config/development/configuration/single/import3.然后如下图所示:第二个随便填.poc:!php/object

YAML流程

YAML遵循流程的标准程序.YAML中的本机数据结构包括简单表示,例如:节点. 它也称为表示节点图. 它包括映射,序列和标量,正在序列化以创建序列化树.通过序列化,对象将使用字节流进行转换. 序列化事件树有助于创建字符流的表示,反向过程将字节流解析为序列化事件树. 之后节点将转换为节点图.之后在YAML本机数据结构中转换这些值. 如下图解释 - YAML中的信息以两种方式使用:机器处理和人类消费. YAML中的处理器用作在上面给出的图中的互补视图之间转换信息的过程的工具.本章介绍YAML处理器在

03.yaml语法和playbook写法

ansible的playbook采用yaml语法,它简单地实现了json格式的事件描述.yaml之于json就像markdown之于html一样,极度简化了json的书写.在学习ansible playbook之前,很有必要把yaml的语法格式.引用方式做个梳理. 1.1 初步说明 以一个简单的playbook为例,说明yaml的基本语法. --- - hosts: 192.168.100.59,192.168.100.65 remote_user: root pre_tasks: - name

Python 爬虫的工具列表

这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. grab - 网络库(基于pycurl). pycurl - 网络库(绑定libcurl). urllib3 - Python HTTP库,安全连接池.支持文件post.可用性高. httplib2 - 网络库. RoboBrowser - 一个简单的.极具Python风格的Python库,无需独立的浏览器即可浏览网页. MechanicalSoup -一个与网站

156个Python网络爬虫资源

本列表包含Python网页抓取和数据处理相关的库. 网络相关 通用 urllib - 网络库(标准库) requests - 网络库 grab - 网络库(基于pycurl) pycurl - 网络库 (与libcurl绑定) urllib3 - 具有线程安全连接池.文件psot支持.高可用的Python HTTP库 httplib2 - 网络库 RoboBrowser - 一个无需独立浏览器即可访问网页的简单.pythonic的库 MechanicalSoup - 能完成自动网站交互的Pyth