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

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

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

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

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

19.08.2008 04:38:51
8 ОТВЕТОВ

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

3
19.08.2008 04:51:05

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

11
19.08.2008 04:52:38
Во втором примере вам нужно добавить отступы для строк «name», «taco» и «age». Прямо сейчас «заголовок» выровнен с ними, и PyYAML помещает «заголовок» в то же отображение с остальными тремя.
eksortso 29.04.2009 03:38:07
AFAIK, после краткого ознакомления со стандартом, кажется, что он должен работать так, как сейчас (однако я могу ошибаться). Опять же, я хочу сказать, что существует много реализаций YAML, и не всегда ясен уровень совместимости между ними :-(
Grey Panther 29.04.2009 08:54:24
// YAML лаконичен и удобен для чтения / редактирования, но на самом деле не пригоден для записи человеком, поэтому вы всегда должны использовать библиотеки для его генерации // Все остальное в этом ответе было замечено ... но о чем это? поднимает брови
dreftymac 7.10.2017 16:16:20
@dreftymac - для одного YAML чувствителен к пробелам, который приносит весь багаж tabs-vs-space, и мне всегда нужно включать «показывать пробелы» в моем редакторе при работе с YAML. Кроме того, помимо списков и словарей, мне довольно сложно запомнить синтаксис более экзотических элементов. задыхаюсь я даже найти XML легче писать , чем YAML :-)
Grey Panther 8.10.2017 17:16:06
@GreyPanther: Хммм ... интересно ... звучит как сильное личное предпочтение синтаксису на основе отступов. Справедливо, я изначально тоже не был фанатом. У Python и YAML есть архитектурные причины для этого, которые некоторые не предпочитают. Однако, с хорошим текстовым редактором и достаточным использованием, выразительная сила обоих может действительно сиять для тех, кто не склонен против них. YAML может быть написан вручную с поддержкой шаблонов, фрагментов и готовых шаблонов.
dreftymac 8.10.2017 18:36:06

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

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

4
19.08.2008 05:17:14
Я обычно стараюсь избегать некромантии, но в основном CDMan говорил о полном BS, когда он сказал, что это не для записи человеком. Это очень легко написать , так же просто, как редактировать его. Если вы понимаете, какое значение имеет пробел в Python, вы можете написать YAML без проблем. ... В противном случае это было бы довольно глупо, поскольку одной из основных целей YAML было создание подлинно написанного человеком текста.
kampu 26.05.2013 07:37:50
Должен согласиться с @kampu здесь. YAML не менее удобен для человека, чем любой другой обычный текстовый файл, где пробелы используются для обозначения структуры и вложенности.
dreftymac 8.10.2017 18:39:02

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

2
26.08.2008 23:37:37

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

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

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

2
12.12.2008 00:47:21

Вы можете увидеть результат в онлайн-парсере 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 + имя% 3A + Еще + имя% 0D% 0A + тако% 3A + Не% 0D% 0A + возрастная% 3A + 27% 0D% 0A & тип = JSON

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

1
19.08.2009 09:51:08

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

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

4
23.02.2011 22:40:27

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

0
24.09.2013 12:36:37