Это действительный YAML? - PullRequest
       29

Это действительный YAML?

4 голосов
/ 19 августа 2008

Так что для моего анализа текста в C # вопрос я был направлен на YAML. Я попал в стену с этой библиотекой, которую мне порекомендовали, так что это просто.

heading:
 name: A name
 taco: Yes
 age: 32

heading:
 name: Another name
 taco: No
 age: 27

И так далее. Это действительно?

Ответы [ 8 ]

11 голосов
/ 19 августа 2008

Частично. YAML поддерживает понятие нескольких последовательных «документов». Если это то, что вы пытаетесь сделать здесь, тогда да, это правильно - у вас есть два документа (или фрагменты документа). Чтобы сделать это более явным, вы должны разделить их тремя штрихами, например:

---
heading:
 name: A name
 taco: Yes
 age: 32
---
heading:
 name: Another name
 taco: No
 age: 27

С другой стороны, если вы хотите сделать их частью одного и того же документа (чтобы их десериализация привела к созданию списка из двух элементов), вы должны написать его следующим образом. Будьте особенно осторожны с уровнем отступа:

- heading:
  name: A name
  taco: Yes
  age: 32
- heading:
  name: Another name
  taco: No
  age: 27

В общем, YAML является кратким и читаемым / редактируемым человеком, но на самом деле не пригодным для записи человеком, поэтому вы всегда должны использовать библиотеки для его генерации. Кроме того, позаботьтесь о том, чтобы между различными версиями YAML произошли серьезные изменения, которые могут вас укусить, если вы используете библиотеки на разных языках, которые соответствуют различным версиям стандарта.

4 голосов
/ 24 февраля 2011

Попробуйте this (Online YAML parser) .

Вам не нужно ничего скачивать или делать что-то. Просто зайдите туда и скопируйте и вставьте. Вот и все.

4 голосов
/ 19 августа 2008

Ну, похоже, YAML исчез из окна. Я хочу, чтобы что-то и человеческое читалось и читалось. Кроме того, это реализация C # ... Я не знаю, , если работает или нет, документация состоит из нескольких примеров кода в одну строку. Он использует собственные файлы YAML и является старым студенческим проектом. Единственный найденный мной C # YAML-парсер использует MS-PL, который мне не очень удобен.

Я мог бы просто закончить свой собственный формат. Будь прокляты лучшие практики, все, что я хочу сделать, это связать ключ со значением.

3 голосов
/ 19 августа 2008

Похоже, существует валидатор YAML с именем Kwalify , который должен дать вам ответ. Тебе следовало пойти с жетоном String, чувак. Писать парсеры это весело :) 1003 *

2 голосов
/ 12 декабря 2008

CodeProject имеет один на:

http://www.codeproject.com/KB/recipes/yamlparser.aspx

Я не слишком много пробовал, но стоит посмотреть.

2 голосов
/ 27 августа 2008

Существует другая библиотека YAML для .NET , которая находится в стадии разработки. Сейчас он поддерживает чтение потоков YAML. Это было проверено на Windows и Mono. Поддержка записи в настоящее время реализуется.

1 голос
/ 19 августа 2009
0 голосов
/ 24 сентября 2013

Просто чтобы сделать явный комментарий об этом: у вас есть проблема с дублирующим ключом сопоставления. Процессор YAML разрешит это как карту !!, которая запрещает дублирование ключей. Однако не все процессоры применяют это ограничение, поэтому вы можете получить неверный результат, если передадите неверный поток YAML в процессор.

...