yaml中管道符号的用途是什么

100 yaml

我是yaml的新手,我有一个问题.管道符号(|)用于多行.yaml有下面的语法吗?

测试:| 6+

我有一个像下面两个的yaml代码,第一个是工作,第二个不是.我不知道那里发生了什么.
第一个文件

Name :
  -
   testing:
     val1
  -
   second:
     val2
  -
   third:
     val3
  -
   then
  - 
    final: |
     a
     aa
     aaa
     aaaa : 'test:'
Run Code Online (Sandbox Code Playgroud)

第二档

Name :
  -
   testing:
     val1
  -
   second:
     val2
  -
   third:
     val3
  -
   then
  - 
    final: |6+
      a
      aa
      aaa
      aaaa : 'test:'
Run Code Online (Sandbox Code Playgroud)

PS:第二个文件是客户的.我正在使用xmlbeans,我得到了"com.esotericsoftware.yamlbeans.parser.Parser $ ParserException:第17行,第12列:预期'块结束',但发现:块映射开始".

在"我正在使用"附近添加了已编辑的 xmlbeans.

Igu*_*aut 144

YAML中行末尾的管道符号表示后面的任何缩进文本都应解释为多行标量值.参见YAML规范.

具体来说,管道表明(缩进除外)标量值应按字面顺序解释,以保留换行符.相反,该>字符表示多行"折叠"标量跟随,意味着换行符被转换为空格.例如:

>>> import yaml
>>> yaml.load("""
... |
...  This is a multi-line
...  literal style scalar.
... """)
'This is a multi-line\nliteral style scalar.\n'
>>> yaml.load("""
... >
...  This is a multi-line
...  folded scalar; new lines are folded into
...  spaces.
... """)
'This is a multi-line folded scalar; new lines are folded into spaces.\n'
Run Code Online (Sandbox Code Playgroud)

6+部分是缩进指示符(应该使用多少缩进空间的明确规范)和"chomping indicator" +,它控制应该如何处理标量文字末尾的额外空格.

你得到的错误是一个棘手的错误:这是因为缩进应该是相对于当前块级元素.因此,在这种情况下,它应该是4+代替6+,因为最后块级元素是数组项(指定-)和文字从缩进4.有点令人惊讶的final: |是,即使映射的值是多行的,映射也不被视为块元素.如果你想一想它就有意义了 - 它仍然只是一个"一线"的"关键:价值"映射.该值恰好是对多行标量值使用特殊语法.令人困惑,但不知怎的一致......

  • 当你说"应该使用多少行缩进"时,你的意思是缩进字符(让我们说空格)?还是真的线? (4认同)
  • @ROunofF四岁回答,你是第一个指出这一点的人.它应该说"缩进的空间".我会解决这个问题. (4认同)
  • 也看看 [in-yaml-how-do-i-break-a-string-over-multiple-lines](/sf/ask/265331811/ -a-string-over-multi-lines) (3认同)
  • `所以在这种情况下它应该是 4+ 而不是 6+` 我认为它应该是 2,而不是 4,因为这是那里的相对缩进。在“pyyaml 6.0”上测试。 (3认同)
  • @bravmi 很好。这个答案已经有 8 年多了,之前没有人指出过这一点。我同意。 (3认同)

fre*_*lys 21

当您希望将换行符保留为换行符时,将使用管道。

欲了解更多信息:https : //yaml-multiline.info/