空字符串是否为有效的YAML文档? 我有一个库在加载空字符串时没有返回任何文档('),我想知道这是否是一个bug 我无法从(最近的一次提问)中推断空字符串是否是有效的YAML文档 各种(在线)YAML验证器需要至少一个字符来显示结果,例如,或 接受空字符串作为输入,但在验证时将输入文本更改为--false,从而提出空字符串是否实际为输入的问题
因此,一般来说,空字符串是有效的YAML文档吗?解析器将YAML文件解析为YAML流。YAML流可以包含多个文档。规范中此流的定义如下:空字符串是否为有效的YAML文档? 我有一个库在加载空字符串时没有返回任何文档('),我想知道这是否是一个bug 我无法从(最近的一次提问)中推断空字符串是否是有效的YAML文档 各种(在线)YAML验证器需要至少一个字符来显示结果,例如,或 接受空字符串作为输入,但在验证时将输入文本更改为--false,从而提出空字符串是否实际为输入的问题,yaml,Yaml,因此,一般来说,空字符串是有效的YAML文档吗?解析器将YAML文件解析为YAML流。YAML流可以包含多个文档。规范中此流的定义如下: l-yaml-stream ::= l-document-prefix* l-any-document? ( l-document-suffix+ l-document-prefix* l-any-document? | l-document-prefix* l-explicit-docu
l-yaml-stream ::= l-document-prefix* l-any-document?
( l-document-suffix+ l-document-prefix* l-any-document?
| l-document-prefix* l-explicit-document? )*
如您所见,由于l-document-prefix
和l-any-document
都是可选的,因此空YAML流是有效的,但不包含任何文档
如果您询问l-any-document
是否可以生成空字符串,答案是否定的。如果没有开头的--
,您就有一个l-bare-document
,它必须至少包含一个节点。普通标量是由ns plain(n,c)
生成的,如果您下降到其中,您会注意到它必须至少包含一个由ns plain first(c)
生成的字符
如果要使YAML流包含一个包含空标量作为根节点的文档,可以使用以下选项:
- 带引号的空标量(
或”
)–如果您希望标量作为字符串加载,最好是这样,因为不带引号的空标量应该解析为”
!!根据规范中定义的模式,null
- 显式文档(
)。由于文档是以指令结束标记显式启动的,因此不允许包含任何内容,这在顶层被解释为空标量--
- 带有标记(
)的显式文档确保将空标量作为字符串加载--!!str
编辑:Yamlint网站上的注释:不要使用它。它不会告诉您它使用的是哪个实现,它期望的是哪个YAML版本等等。它的输出表明它将空输入解析为带有空标量的单个文档,并将该标量解析为布尔值
false
。虽然规范允许这样做(因为规范不会强制实现任何特定的模式),但它不符合任何官方方案。解析器将YAML文件解析为YAML流。YAML流可以包含多个文档。规范中此流的定义如下:
l-yaml-stream ::= l-document-prefix* l-any-document?
( l-document-suffix+ l-document-prefix* l-any-document?
| l-document-prefix* l-explicit-document? )*
如您所见,由于l-document-prefix
和l-any-document
都是可选的,因此空YAML流是有效的,但不包含任何文档
如果您询问l-any-document
是否可以生成空字符串,答案是否定的。如果没有开头的--
,您就有一个l-bare-document
,它必须至少包含一个节点。普通标量是由ns plain(n,c)
生成的,如果您下降到其中,您会注意到它必须至少包含一个由ns plain first(c)
生成的字符
如果要使YAML流包含一个包含空标量作为根节点的文档,可以使用以下选项:
- 带引号的空标量(
或”
)–如果您希望标量作为字符串加载,最好是这样,因为不带引号的空标量应该解析为”
!!根据规范中定义的模式,null
- 显式文档(
)。由于文档是以指令结束标记显式启动的,因此不允许包含任何内容,这在顶层被解释为空标量--
- 带有标记(
)的显式文档确保将空标量作为字符串加载--!!str
编辑:Yamlint网站上的注释:不要使用它。它不会告诉您它使用的是哪个实现,它期望的是哪个YAML版本等等。它的输出表明它将空输入解析为带有空标量的单个文档,并将该标量解析为布尔值
false
。虽然这是规范允许的(因为规范不会强制实现任何特定的模式),但它不符合任何官方方案。非常感谢!非常感谢你!