2011-09-14 2 views
3

저는 간단한 물리 엔진을 작성 중이며 어떤 형태의 설정 파일을 포함하고 싶습니다.xml 구성 파일 사용 - 간단한 매핑 방식?

xml을 보면 트리 구조가 나에게 많은 의미가 있으며 libxml을 보면 읽기 쉽고 수정하기가 쉽습니다.

내가 갖고있는 문제는 내가 그것을 내포하는 방법입니다.

내 응용 프로그램이 C로 작성되었습니다. xml 구성 파일을 구현하기위한 표준 규칙이 있습니까?

논의의 여지없이 예제 환경을 설정하겠습니다. 나는이처럼 보이는 자료 구조와 foo.c를라는 파일이 있다고 가정하자 :

typedef struct { 
    char* name; 
    float x; 
    float y; 
}info; 

<info> 
    <name>something</name> 
    <x>0</x> 
    <y>0</y> 
</info> 

과 같은 설정 파일이라고 foo.xml 다른 클래스 bar.c을 그 libxml2를 사용하여 XML 파일을 트리로 읽습니다. 사람들은 일반적으로 그러한 데이터 구조를 어떻게 채울 것입니까?

(이 구현하는 올바른 방법 인 경우 내가 생각하지만 확실하지 오전 봤는데 뭔가) 내가

예 응답 XML에 대한 대안을 요구하고 있지 않다. 당신은 단지 설정 파일을 필요로하는 경우

tree* current_tree = load_config(fopen("foo.xml")); 
char[][] fields = get_fields(current_tree); 

if(contains(fields, "name")) { 
    name = current_tree->name; //i'd have to navigate through the tree to find name or something 
} 

답변

1

:

tree* load_config(FILE* config_file); 
char[][] get_fields(tree* current_tree); 

당신이 나무를 반환하고 다음과 같은 조건문의 무리가, 그 함수를 호출 :

bar.c는 기능을 가지고있다 그리고 반드시 XML 일 필요는 없습니다. Boost Program Options

간단하고 사용하기 쉽습니다. .ini 파일 형식을 사용합니다. .ini 파일의

예 :

[info] 
name=something 
x=0 
y=0 
+0

나는 대안을 묻지 않았다 ... – Newbie

+1

그러나 그들은 더 좋을지도 모른다. XML은 대단히 복잡하지는 않지만 필요로하는 것보다 구문 분석하고 처리하는 것이 조금 더 무겁다. –

0

내가 같은 방식으로 같은 일을 사용하지만 난 libmxml 라이브러리를 ... 사용하는 매우 간단한

1

당신은 libconfig를 살펴 할 수 있습니다. 이 경우 설정 파일은 다음과 같습니다 :

info { 
    name = something; 
    x = 0; 
    y = 0; 
}; 

부스트 라이브러리는 (데비안과 같은) 일부 배포판에서는 상당히 큽니다.