首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管道符号在YAML中的用途是什么?

管道符号在YAML中的用途是什么?
EN

Stack Overflow用户
提问于 2013-03-21 06:10:25
回答 2查看 113.8K关注 0票数 236

我是yaml的新手,我有一个关于用于多行的管道符号的问题。YAML有像下面这样的语法吗?

测试:|6+

在下面的两个YAML文件中,第一个是工作的,第二个是无效的。我不知道是什么导致了这一切。

第一文件

代码语言:javascript
复制
Name :
  -
   testing:
     val1
  -
   second:
     val2
  -
   third:
     val3
  -
   then
  - 
    final: |
     a
     aa
     aaa
     aaaa : 'test:'

第二文件

代码语言:javascript
复制
Name :
  -
   testing:
     val1
  -
   second:
     val2
  -
   third:
     val3
  -
   then
  - 
    final: |6+
      a
      aa
      aaa
      aaaa : 'test:'

第二个文件是客户的。

我使用的是XMLBeans,我得到了以下错误:

com.esotericsoftware.yamlbeans.parser.Parser$ParserException:第17行,第12列:期望一个‘块结束’,但找到:块映射开始“

EN

回答 2

Stack Overflow用户

发布于 2013-09-09 22:37:58

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

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

代码语言:javascript
复制
>>> 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'

6+部分是缩进指示器(应该使用多少缩进空格的显式规范)和"chomping指示符“+,它控制标量文字末尾的额外空格的处理方式。

您所得到的错误是一个棘手的错误:这是因为缩进应该相对于当前块级元素。因此,在本例中,应该是2+而不是6+,因为最后一个块级元素是映射final:,文本从其中缩进2。更新由@bramvi更正。

票数 306
EN

Stack Overflow用户

发布于 2020-05-07 15:03:45

当您希望将新行保持为新行时,将使用该管道。

有关更多信息:https://yaml-multiline.info/

票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15540635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档