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

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

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

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

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

Ответов (8)

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

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

Частично. 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 существовали некоторые критические изменения, которые могут вас укусить, если вы используете библиотеки на разных языках, которые соответствуют разным версиям стандарта.

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

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

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

CodeProject есть по адресу:

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

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

Вы можете увидеть результат в онлайн-парсере yaml:

http://yaml-online-parser.appspot.com/?yaml=heading%3A%0D%0A+name%3A+A+name%0D%0A+taco%3A+Yes%0D%0A+age%3A + 32% 0D% 0A% 0D% 0Aheading% 3A% 0D% 0A + name% 3A + Another + name% 0D% 0A + taco% 3A + No% 0D% 0A + age% 3A + 27% 0D% 0A & type = json

Как видите, создан только один узел заголовка.

Попробуйте это (онлайн-парсер YAML) .

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