逃离& (&符号)在YAML条目开头?

时间:2010-02-18 18:34:30

标签: yaml

YAML条目开头的&符号通常被视为一组数据的标签,可以在以后引用。如何在YAML条目开始时逃避合法的&符号。例如:

---
- 新闻:
news_text:& ldquo; Text!& rsquo;

我希望没有& ldquo成为yaml文件中的标签,而是当我解析Y​​AML文件以使news_text与& ldquo;在条目中。

4 个答案:

答案 0 :(得分:13)

只需在文字旁边加上引号

require 'yaml'

data = <<END
---
- news:
    news_text: "&ldquo;Text!&rsquo;"
END

puts YAML::load(data).inspect

# produces => [{"news"=>{"news_text"=>"&ldquo;Text!&rsquo;"}}]

答案 1 :(得分:3)

您可以将文字括在引号中:

---
- news:
    news_text: "&ldquo;Text!&rsquo;"

此外,您可以在那里使用正确的字符:

---
- news:
    news_text: “Text!’

将特定于完全不同的标记语言的转义放入用另一种标记语言编写的文档中似乎对某些人来说很奇怪。

答案 2 :(得分:1)

或者你可以把字符串放在下一行,如果你把&#39; &gt; &#39;或者&#39; | &#39;在以前的字符串的地方。使用&#39; | &#39;角色您的解析器将保留您的自定义换行符,而&gt; &#39;把它变成一个长串,忽略换行符。

- news:
    news_text: >
        &ldquo;Text!&rsquo;

答案 3 :(得分:0)

将整个字符串放在单引号中可以达到您想要的效果:

---
- news:
    news_text: '&ldquo;Text!&rsquo;'

但是,我认为任何yaml库都应该足够智能,为你做到这一点?