2013-07-29 1 views
0

YAML 파일에서지도가 이미 정의 된 후 항목을지도에 추가 할 수 있습니까?YAML 파일 내의지도에 항목 추가

나는 파일이있는 경우 예를 들어, : 다음

fruits: 
    bananas: 
    quantity: 4 
    apples: 
    quantity: 2 
    grapes: 
    quantity: 37 

vegetables: 
    lettuce: 
    quantity: 2 
    beets: 
    quantity: 4 

과 나중에 나는 "야채 후 파일 (즉, 나중에 아무것도 할 수있는, 내"과일 "지도가 완료되지 실현 "지도가 정의 됨) 기존지도에 다른 과일을 추가 하시겠습니까? 무언가 :

fruits: 
    oranges: 
    quantity: 4 

은 덮어 쓰지 않고 기존 맵에 추가됩니까?

즉, 파일의 다른 곳에있는 "과일"지도에 "오렌지"를 추가하는 유효한 방법이 있습니까?

배경 비트 : yaml-cpp를 C++과 함께 사용할 계획입니다. 나는 YAML을 쓰고있는 프로그램의 입력 파일 형식으로 사용하고있다. 사용자가 만든 파일을 구문 분석하고 구조를 내 프로그램의 개체로 변환합니다. 개체 (이 예제에서는 "fruits")는 사용자가 입력 파일에 흩어져있어 참조하거나 다른 개체 근처에서 사용하는 것이 일반적이기 때문에 맵에 항목을 추가 할 수 있기를 원합니다.

+0

어떤 언어와 라이브러리를 사용하고 있으며 어떤 상황에서 사용하고 있습니까? – zigg

+0

이것을 설명하기위한 배경 섹션을 추가했습니다. 희망이 도움이됩니다. –

답변

1

반복되는 키가있는 YAML은 유효하지 않습니다.

fruits: whatever 
bar: baz 

다음 파일에 추가하여 키 fruits과 관련된 값을 수정하는 방법은 없습니다 : 당신의 YAML 파일로 시작하는 경우

fruits: foo 
fruits: bar 

: 예를 들면, 다음은 유효한 YAML하지 않습니다. 다른 YAML 파서는 반복 된 키를 독자적인 방법으로 해석 할 수 있지만 spec은이를 오류로 정의합니다. 그러나

fruits1: whatever 
bar: baz 
fruits2: something else 

다음 코드에서, 단지 그들이 fruits1fruits2 (및 fruits3, ...)와 관련 값 병합을 : 당신이 원하는 경우

당신은 예를 들어,하는 YAML 파일 프로세스를 게시 할 수 너는 좋아한다.

+0

yaml-cpp 또는 모든 파서의 경우입니까? 일부 온라인 파서 (예 : http://yaml-online-parser.appspot.com/)는 후속 '과일'정의가 이전 정의보다 우선 함을 보여줍니다. 어쨌든 내 질문은 : "오렌지"를 이전에 정의 된 "과일"맵에 추가하는 유효한 방법이 있습니까? –

+0

이것은 YAML의 정의입니다. 파서가 다르게 해석 할 수 있습니다 (예 : 일부는 처음부터 끝까지 걸릴 수도 있고 마지막에서 걸릴 수도 있고 무작위로 고를 수도 있고 오류가 발생할 수도 있습니다). YAML은 유효하지 않으므로 의존해서는 안됩니다. –