2013-03-21 49 views
38

Tôi mới sử dụng yaml và tôi có một câu hỏi. Pipe symbole (|) được sử dụng cho nhiều dòng. yaml có cú pháp nào giống như dưới đây không?việc sử dụng biểu tượng ống là gì trong yaml

kiểm tra: | 6+

Tôi có một mã yaml như dưới đây hai, một đầu tiên được làm việc và thứ hai là không. Tôi không biết chuyện gì đang xảy ra ở đó.
Đầu tiên file

Name : 
    - 
    testing: 
    val1 
    - 
    second: 
    val2 
    - 
    third: 
    val3 
    - 
    then 
    - 
    final: | 
    a 
    aa 
    aaa 
    aaaa : 'test:' 

Thứ hai file

Name : 
    - 
    testing: 
    val1 
    - 
    second: 
    val2 
    - 
    third: 
    val3 
    - 
    then 
    - 
    final: |6+ 
     a 
     aa 
     aaa 
     aaaa : 'test:' 

Tái bút: tập tin thứ hai là khách hàng. Tôi đang sử dụng xmlbeans và tôi nhận được "com.esotericsoftware.yamlbeans.parser.Parser $ ParserException: Dòng 17, cột 12: Dự kiến ​​một 'kết thúc khối' nhưng được tìm thấy: bắt đầu lập bản đồ khối".

Sửa XMLBeans thêm gần "Tôi đang sử dụng".

Trả lời

67

Biểu tượng đường ống ở cuối dòng trong YAML biểu thị rằng bất kỳ văn bản thụt lề nào sau đây sẽ được hiểu là giá trị vô hướng nhiều đường. Xem the YAML spec.

Cụ thể, đường ống chỉ ra rằng (ngoại trừ thụt đầu dòng) giá trị vô hướng phải được hiểu theo nghĩa đen theo cách bảo tồn dòng mới. Ngược lại, ký tự > chỉ ra rằng vô hướng nhiều đường "gấp" theo sau, có nghĩa là các dòng mới được chuyển đổi thành dấu cách. Ví dụ:

>>> 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' 

Phần 6+ là chỉ số thụt đầu dòng (một đặc điểm kỹ thuật rõ ràng bao nhiêu không gian của thụt đầu dòng nên được sử dụng) với "nhai chỉ" + kiểm soát như thế nào khoảng trống thừa ở phần cuối của văn chương vô hướng nên được xử lý.

Lỗi bạn đang gặp là một vấn đề phức tạp: Đó là do thụt đầu dòng nên liên quan đến yếu tố cấp khối hiện tại. Vì vậy, trong trường hợp này, nó phải là 4+ thay vì 6+ vì phần tử cấp khối cuối cùng là mục mảng (được chỉ định bởi -) và chữ được thụt lề 4 từ nó. Hơi ngạc nhiên khi ánh xạ final: | không được coi là yếu tố khối mặc dù giá trị của nó là nhiều hàng. Nó có ý nghĩa nếu bạn suy nghĩ về nó - nó vẫn chỉ là một bản đồ "chìa khóa": giá trị ". Giá trị chỉ xảy ra khi sử dụng cú pháp đặc biệt cho các giá trị vô hướng nhiều dòng. Khó hiểu, nhưng bằng cách nào đó nhất quán ...

+0

Khi bạn nói "bao nhiêu dòng thụt đầu dòng nên được sử dụng", bạn có nghĩa là các ký tự thụt dòng (giả sử khoảng trắng) không? Hoặc thực sự là dòng? – ROunofF

+1

@ROunofF Câu trả lời bốn tuổi và bạn là người đầu tiên chỉ ra điều đó. Nó nên nói "không gian thụt lề". Tôi sẽ sửa nó. – Iguananaut

+1

http://yaml-multiline.info/ có một số giải thích rất tốt với bản trình diễn. –

Các vấn đề liên quan