2010-02-18 52 views
8

YAML條目開頭的&符號通常被看作是稍後可以引用的一組數據的標籤。如何在YAML條目開始時避開合法的&符號。例如:在YAML條目的開始處轉義&(&符號)?

---
- 新聞:
        news_text:& ldquo;發短信! & rsquo;

我期待沒有& ldquo是yaml文件中的標籤,但是當我解析Y​​AML文件以使news_text返回時&「ldquo;在入口。

回答

11

只要把引號的文本

require 'yaml' 

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

puts YAML::load(data).inspect 

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

把用單引號將整個字符串會做你想要什麼:

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

但是,我認爲任何YAML庫應該足夠聰明到爲你做那個?

3

你或許可以用引號括起來的文字:

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

此外,你可能只是以及使用正確的字符有:

--- 
- news: 
    news_text: 「Text!’ 

把具體逃逸到一個完全不同的標記語言用另一種標記語言寫成的文檔看起來對我來說很奇怪,不知何故。

1

或者你可以把字符串的下一行,如果你把一個「>」或「|'在字符串曾經是的地方。使用'| ''字符您的分析器將保持您的自定義換行符,而'>'將它變成一個長字符串,忽略換行符。

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