YAML 中的单个感叹号有什么作用?

2023-12-27

我正在与YamlDotNet http://sourceforge.net/projects/yamldotnet/库,加载 YAML 文件时出现此错误:

解析标签时,未找到预期的标签 URI。

YAML 文件应该是格式良好的,因为它来自直接从 RoR https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en-GB.yml。该错误似乎是由以下代码触发的:

formats:
  default: ! '%d-%m-%Y'
  long: ! '%d %B, %Y'
  short: ! '%d %b'

我不是专家,但我从 YAML 规范中看到,您可以使用感叹号来指示自定义对象/类型,并使用两个感叹号来指示显式内置类型。

obj1: !custom # whatever
obj2: !!str "My string"

但是,我找不到任何对上面使用的感叹号的引用。这是什么意思?为什么我使用的 YAML 库似乎无法解析它?请注意,如果我删除这些感叹号,则该文件可以正常解析。


That ! is the 非特定标签.

The YAML 规范 1.2 http://www.yaml.org/spec/1.2/spec.html#id2784064(以及之前的1.1 http://yaml.org/spec/1.1/#id900262)说:

通过明确指定“!”非特定标签属性,节点 然后将被解析为“普通”序列、映射或字符串, 随其类。

看一看here http://yaml.org/refcard.html到标签“语法”:

none    : Unspecified tag (automatically resolved by application).
'!'     : Non-specific tag (by default, "!!map"/"!!seq"/"!!str").
'!foo'  : Primary (by convention, means a local "!foo" tag).
'!!foo' : Secondary (by convention, means "tag:yaml.org,2002:foo").
'!h!foo': Requires "%TAG !h! <prefix>" (and then means "<prefix>foo").
'!<foo>': Verbatim tag (always means "foo").

为什么 YamlDotNet 会抛出错误?我不能 100% 确定,但我认为您发现了一个错误。

YamlDotNet 是一个端口LibYAML http://pyyaml.org/wiki/LibYAML,因此很容易比较来源。

Scanner.c (LibYAML) 的第 2635 行:

/* Check if the tag is non-empty. */
if (!length) {

Scanner.cs (YamlDotNet) 的第 2146 行:

// Check if the tag is non-empty.
if (tag.Length == 0)

我知道,两者看起来非常相似,但在这一点上length是 1 并且tag.Length是 0。原始 C 代码负责处理最初的“!” (整个长度)但 C# 不这样做(只是标签“name”长度)。

向项目提交问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

YAML 中的单个感叹号有什么作用? 的相关文章

  • 从字符串名称返回 FontStyle

    我想编写一个函数 它将返回 FontStyle 并以字符串作为参数 FontStyle f function Italic FontStyles Italic 我不想编写 Switch case 或 if else 语句来执行相同的操作 对
  • 为单个方法引用大 DLL

    我想在 C 中使用大型类库 dll 中的单个方法 是否有性能或其他方面的缺点 我应该使用反射工具 读取 方法代码并将其复制粘贴到我的项目中吗 更新 硬盘空间不是问题 我的应用程序是网络应用程序 是否有性能或其他方面的缺点 唯一真正重要的是可
  • lambda 表达式是多线程的吗?

    lambda 表达式是多线程的吗 假设当你将数学公式编写为 lambda 方法时 当你将其传递给另一个方法时 它会是多线程的吗 不是100 清楚你问的是什么 您是否想问 lambda 是否自然地在不同的线程上运行 如果是这样 则它们只是 S
  • 父窗体中的居中消息框[重复]

    这个问题在这里已经有答案了 有没有一种简单的方法可以在 net 2 0中将MessageBox居中于父窗体中 我在 C 中确实需要这个并发现中心消息框 C http bytes com topic c sharp answers 26712
  • 如果未返回,则在一段时间后终止线程

    我有一个线程从网络或串行端口获取一些数据 如果 5 秒内没有收到数据 则线程必须终止 或返回 false 换句话说 如果线程运行时间超过 5 秒 则必须停止 我用 C 编写 但任何 NET 语言都可以 有两种方法 1 封装超时 从网络或串行
  • 中继命令和无参数执行方法

    我目前正在学习 WPF 和 MVVM 我想我已经了解了大部分内容及其工作原理 但我在使用 RelayCommand 或 DelegateCommand 时遇到了一些我不明白的问题 我认为这与代表的工作方式有关 请注意 下面的代码目前仅处于测
  • 使用 wmi 获取活动会话(Win32_LogonSession 还返回非活动/旧会话)

    有没有办法只显示 wmi 的活动会话 问题是 Win32 LogonSession 还显示不活动 断开连接的会话 ManagementScope scope new ManagementScope ManagementPath Defaul
  • 何时使用 IComparable 与何时使用IComparer

    我正在尝试找出我需要实现哪些接口 他们本质上都做同样的事情 我什么时候会使用其中一种而不是另一种 好吧 他们不是quite与IComparer
  • 依赖注入的惰性解析

    我有 net 课程 我使用 Unity 作为 IOC 来解决我们的依赖关系 它尝试在开始时加载所有依赖项 Unity中有没有一种方法 设置 允许在运行时加载依赖项 还有更好的解决方案 Unity 2 0 中对 Lazy 和 IEnumera
  • Sencha Touch 和远程服务器上的身份验证

    我希望收到您关于使用 PhoneGap 和 Sencha Touch 的应用程序以及带有 Active Directory 的 NET 服务器的身份验证机制的反馈 因此 我们需要在移动设备上存储用户凭据 以便用户每次希望使用该应用程序时都不
  • 将 C# 代码转换为 F#(if 语句)

    我想知道如何转换此代码逐行从 C 到 F 我不想使用任何类型的 F 习惯用法或类似的东西 我想了解如何直接映射C 的构造到 F 这是 C 代码 requires l Length gt 0 int GetMinimumValue List
  • 使用 R 读取和转换二进制原始数据

    我有一个file https drive google com file d 0BxMpk0nhnJy6SFhxd2xuMzJYYlk edit usp sharing其中包含原始 二进制数据和 ascii 它包含一个时间戳和一个代表速度的
  • 如何将字符串解析为 UNIQUEIDENTIFIER?

    我正在编写一个实体框架 LINQ 查询 其中我想将字符串解析为 UNIQUEIDENTIFIER 又名 GUID 作为WHERE clause public IEnumerable
  • 在服务器桌面会话上捕获屏幕

    我开发了一个 GUI 测试框架 可以按计划对我们公司网站进行集成测试 当出现问题时 它会截取桌面等内容 它在专用 Windows Server 2008 上的登录用户上运行 无人值守 问题是在我已断开远程桌面会话连接的桌面上截取屏幕截图 我
  • Parse::RecDescent 语法未按预期工作

    我所能做的就是 STRING PARAMS VARIABLE 和 FUNCNAME FUNCTION 似乎有问题 但我就是看不到它 use strict use Parse RecDescent RD ERRORS 1 Make sure
  • 使用 FoldLine 解析多个块

    对于这个简化的问题 我试图解析一个如下所示的输入 foo bar baz quux woo hoo xyzzy glulx into foo bar baz quux woo hoo xyzzy glulx 我尝试过的代码如下 import
  • 为什么存在 async 关键字

    浏览 msdn 9 频道视频时 我发现以下未答复的评论 希望有人能解释一下 我不明白 async 关键字的意义 为什么不直接允许 任何时候方法返回任务时都会使用await关键字 就像迭代器一样 可以在任何返回 IEnumerable 的方法
  • SSL/TLS/HTTPS 站点在 C#/.NET WebBrowser 控件中非常慢,但在 Internet Explorer 中则很好

    背景 我正在修改自动维基浏览器 http en wikipedia org wiki Wikipedia AutoWikiBrowser使用托管在安全服务器上的 MediaWiki 站点 我允许用户通过 C 应用程序中的 WebBrowse
  • 为什么文件更新时“如果较新则复制”不复制文件?

    我在 Visual Studio Express 中有一个解决方案 如下所示 The LogicSchemaC 中的类 将在运行时解析指定的 XML 文件 以下是在main的方法Program cs LogicSchema ls new L
  • 服务器响应 PASV 命令返回的地址与建立 FTP 连接的地址不同

    System Net WebException 服务器响应 PASV 命令返回的地址与建立 FTP 连接的地址不同 在 System Net FtpWebRequest CheckError 在 System Net FtpWebReque

随机推荐

  • 托管基于 Python 的 Websocket 服务器

    我正在寻找托管一个基本的 Websocket 服务器 我想看到运行的代码是 快速闪烁 https github com Paraintom FastFlicker 您知道如何以及在哪里可以在线托管此申请吗 PythonAnywhere 开发
  • roxygen2:即使使用 @export 后,函数也未导出到 NAMESPACE

    我正在构建一个包并收到错误 指出函数不是包的导出对象 在 R 脚本中 我使用 export 标签来导出函数 但是当我使用 document 或 roxygen roxigenise 时 函数不会导出到命名空间 尽管会创建该函数的 Rmd 文
  • Xamarin跨平台中可移植类库和共享类库的区别

    谁能解释一下 Xamarin 跨平台中可移植类库和共享类库之间的区别 只是我对他们的理解 共享类库作为静态库 共享源代码 工作 而可移植库 则像动态库一样
  • ng-click 在 IE 中不起作用,但在 CHROME 中工作正常

  • 如何获取 np.array 中每个数字的指数?

    假设我有数组 x np array 0 00001 0 001 numpy 会将数字变为 array 1 00000000e 05 1 00000000e 03 现在我想要得到指数 比如 x get exponent 有结果 5 3 您可以
  • iis 7.5 ASP.net 挂起请求

    我的 iis 网络服务器遇到一些性能问题 它随机挂起 我正在尝试找出如何加快服务器速度 我在服务器上启用了失败请求跟踪 并将其设置为在请求超过 3 秒时生成日志 生成的日志 xml 显示的内容不多 但紧凑的性能日志中有一个点指示服务器挂在日
  • Python ctypes:传递字符串数组

    我在 Python 2 7 中有一个字符串数组 我想通过它传递给 C 函数ctypes unsigned int SetParams unsigned int count const char params 所以我可以在python中定义参
  • NPM Run Build 总是构建生产而不是开发

    在我继承的项目中 我试图获取构建命令来构建除Production 我试图更改别名script部分在package json传递额外的变量 例如 dev and configuration dev无济于事 该项目有以下 json 数据文件 e
  • zabbix UserParameter返回2个或多个值

    i use UserParameter Firebird F tools zabbix agent firebird Firebird bat 1 如何在 1 次运行的 bat 文件中获取两个或更多值 您正在寻找https www zabb
  • 实体框架CTP4:SetInitializer放在哪里?

    我正在尝试使用 CTP4 预览将实体框架 首先是代码 添加到使用测试数据运行的 MVC 应用程序 我目前收到此错误 自创建数据库以来 支持 SchedulerContext 上下文的模型已发生变化 手动删除 更新数据库 或使用 IDatab
  • 我是否需要为每个新的 .swift 文件创建一个新的 SpriteKit 关卡编辑器文件?

    我正在尝试熟悉 Sprite Kit 关卡编辑器 默认情况下 有一个 gamescene sks 文件附加到 gamescene swift 例如 如果我正在制作 gameoverscene 或 playscene 如果我想在关卡编辑器中使
  • 将列从 varchar(8000) 更改为 varchar(max) 是否存在任何隐藏的陷阱?

    我有很多 超过一千个地方 的遗产T SQL代码只使INSERT变成一个varchar 8000 实用程序表中的列 我们的需求发生了变化 现在该列需要能够处理更大的值 结果我需要制作该专栏varchar max 这只是一个纯数据列 没有对其执
  • hibernate标准查询时间戳

    我有一个表 其中有一列 Submitted date 没有时区的时间戳 我需要列出表中具有特定日期作为提交日期的所有记录 但不考虑数据库中的时间 我通过使用条件查询和休眠来检索记录 怎么忽略这里的时间呢 实际上 我从客户端传递了一个日期 并
  • 如何在 Meteor 中从服务器调用客户端方法?

    使用 Meteor 方法可以轻松完成相反的操作 从客户端调用服务器端 假设您想要从服务器直接运行客户端方法或作为回调运行客户端方法 一个例子是用户在您的网站上注册 在服务器上注册成功后 会弹出一个模式窗口 提醒他们注册已成功 我们试图追求单
  • 在复杂条件下使用 JPA 实体图

    我有一个基于 Spring MVC JPA Hibernate 构建的项目 我使用实体图 JPA 2 1 来定义从数据库中获取哪些数据 如下例所示 EntityGraph
  • 动态 PHP ZIP 文件

    从服务器上的文件夹中压缩 例如 2 个 文件并强制下载的最简单方法是什么 无需将 zip 保存到服务器 zip new ZipArchive the string file1 is the name we re assigning the
  • 使小部件在 Qt 布局中部分重叠

    我正在尝试使小部件在 Qt 布局中部分重叠 我当前的布局如下 通过QVBox布局 http doc qt io qt 4 8 qVboxlayout html含有四个QHBox布局 http doc qt io qt 4 8 qhboxla
  • 如何检测 Windows 10 是否处于平板电脑模式

    我正在尝试找到一种方法来检测 Windows 10 是否处于平板电脑模式 请注意 这不是查询用户是否有平板电脑 这可以通过以下方式解决GetSystemMetrics SM CONVERTIBLESLATEMODE 就我而言 无论 Win1
  • 从一组给定的数字中生成选择的最佳方法是什么?

    例如 如果要求在 1 到 5 之间做出所有选择 答案如下所示 1 2 3 4 5 1 2 1 3 1 4 1 5 2 3 2 4 2 5 3 4 3 5 4 5 1 2 3 1 2 4 1 2 5 1 3 4 1 2 3 4 5 谁能建议一
  • YAML 中的单个感叹号有什么作用?

    我正在与YamlDotNet http sourceforge net projects yamldotnet 库 加载 YAML 文件时出现此错误 解析标签时 未找到预期的标签 URI YAML 文件应该是格式良好的 因为它来自直接从 R