2012-03-01 4 views
2

교수님, (설명 할 수없는 이유로) Google의 가스 시뮬레이션 (C++로 작성된)의 모든 입출력 파일을 XML 파일 형식으로 plain-old .txt 우리가 지금까지 사용해 온 파일들.시뮬레이션을위한 입출력 파일의 XML 사용법/장점에 대한 이해

나는 XML 파일 형식이 "좋음"이며 더 나은 "데이터 구성"에 도움이된다고 들었다. XML의 광고에 대한 인터넷 검색은 "데이터베이스 및 웹 개발"과 내가 전혀 지식이없고 내가 관심이없는 다른 분야에서 어떻게 사용되는지에 대한 많은 정보를 던졌습니다.

Xerces 나 RapidXML과 같은 C++ XML 파서에 대한 모든 문서는 필자의 좌절감을 극복하기 위해 이 문서에 극히 열세 인 것으로 보입니다. 어떤 문서가 있더라도 소개 용 예제에서는 멋진 XML 용어 ("DOM?" "SAX?" "schema?")를 많이 사용합니다.

은 전반적으로, 단지 .txt에서 내 입력 - 출력 파일 형식을 전환하는 것은 "XML은"그래서 내 질문은 3 배입니다 엄청난 고통

을 보인다합니다. 나는 그것이 내 초기 설정/데이터 파일 형식으로 사용하는 경우

  1. XML 문서 형식의 진짜 장점은 무엇입니까? 나는 일반적으로 사용하는 입력 및 출력 파일의

  2. 한 예는

Pressure Temperature Volume  Radius 
    0.2  7.8  4.5  6.7 
    0.5  4.5  7.8  8.9 
    0.6  7.8  4.5  1.2 
    0.7  4.5  8.9  2.3 

여기에 XML로 전환에 어떤 이점이있을 것입니까? 내가 어떻게 그럴 수 있니? 위와 같은 텍스트 파일에는 일반적으로 4 개만 표시된 50000 줄의 번호가 있습니다. XML 파일을 ASCII 파일 텍스트 파일 형식으로 comopared로 읽고 쓸 수 있다는 장점이 있습니까?

3. 누군가 위의 원주 데이터 을 XML 파일 형식으로 다시 작성하는 방법을 알려주시겠습니까? 또한 누군가가 나에게이 파일을 구문 분석하고 데이터를 배열 pressure[N] '온도 [N]'등으로 파싱하는 방법에 대한 완전한 C++ 코드 샘플을 제공 할 수 있다면 좋을 것입니다.

나는 OP 사용자가 문제를 코드 아웃하기 위해 자신의 시도를하지 않는 한 코드를 돕는 것을 싫어한다는 것을 알고 있습니다. 그래서 질문이 누군가가 올바른 트랙에 도움이 될 유용한 초보자 링크를 설정할 수 있도록 위의 C++를 사용하여 colmnar 데이터를 포함하는 간단한 XML 파일을 구문 분석 할 때 내 시도로이 게시물을 계속 업데이트 할 수 있습니다.

+0

이렇게하면 XML에 익숙해 질 수 있습니다. http://www.w3schools.com/xml/ – lstbl

답변

3

작은 정보 또는 아주 작은 데이터 세트로 작업 할 때 특히 이점이 있다는 것을 이해하는 것이 어렵다는 것을 알고 있습니다. 때로는 수동으로 파싱하는 것이 실제로 더 나은 옵션처럼 보일 수도 있습니다.

그러나 중재 및 대형 데이터 세트로 작업 할 때 데이터 항목이 연결되어 있거나 관계가있는 경우 XML로 설명하는 것이 가장 좋습니다. 왜? 이를 통해 IT 업계에서 주로 사용하는 보편적 인 형식으로 데이터를 구성 할 수 있습니다. 여러 가지 다른 기술 (데이터베이스, 프로그래밍 라이브러리 등)을 통해 내가 원하는 데이터를 저장하고 신속하게 찾을 수 있습니다.

지난 주 나는 파일 시스템의 스냅 샷을 md5 파일과 함께 기록해야하는 프로젝트에서 일하고있었습니다. 이를 위해 RapidXML을 사용하는 작은 C++ 응용 프로그램을 개발하여 전체 파일 시스템 트리를 검색하고 각 파일의 md5 합계를 XML로 기록하기로 결정했습니다.

이렇게하면 디렉터리, 하위 디렉터리 및 파일 간의 관계를보다 쉽게 ​​설명 할 수 있습니다. 예를 들어

, 다음 나무 :

. 
├── dir1 
│   └── subdir1_1 
│    └── subdir1_2 
│     └── subfile1_2 
├── dir2 
│   └── subdir2_1 
│    └── subfile2_1 
├── dir3 
│   └── subdir3_1 
│    └── subdir3_2 
│     └── subdir3_3 
│      └── subdir3_4 
│       └── subfile3_4 
├── nodeid 

은 결국이 구조로 변환되는 :

<?xml version="1.0" encoding="utf-8"?> 
<directory name="dir1"> 
    <directory name="subdir1_1"> 
     <directory name="subdir1_2"> 
      <file name="subfile1_2" md5="d41d8cd98f00b204e9800998ecf8427e"/> 
      <directory name="dir3"> 
       <directory name="subdir3_1"> 
        <file name="subfile3_4" md5="d41d8cd98f00b204e9800998ecf8427e"/> 
       </directory> 
      </directory> 
     </directory> 
    </directory> 
</directory> 
<file name="nodeid" md5="045f8e15c66c91bcd503377c4b0bd565"/> 
<directory name="dir2"> 
    <directory name="subdir2_1"> 
     <file name="subfile2_1" md5="d41d8cd98f00b204e9800998ecf8427e"/> 
    </directory> 
</directory> 

XML 형식의 파일에서 검색되지 않은 형식의 파일보다 낫다 '당신이 돈 때문에 찾고있는 것을 찾을 수 있으려면 파일의 모든 단일 데이터를 읽어야합니다. 대신 전체 데이터 섹션을 건너 뛰고 곧장 앞으로 나아가보다 빠른 검색 메커니즘을 제공 할 수 있습니다.

이제 문제를 해결하십시오. 데이터 형식을 다음 형식으로 설명합니다. 압력, 온도, 부피 및 반경은 어떻게 든 단일 요소를 설명하기 위해 연결된 속성 인 것처럼 보입니다. 그래서

<element Pressure="0.2" Temperature="7.8" Volume="4.5" Radius="6.7"/> 
<element Pressure="0.5" Temperature="4.5" Volume="7.8" Radius="8.9"/> 

과 : 그래서 함께 그룹화는 element을 설명합니다.

+0

좋은 예를 들어 +1 –

1

당신이 정말로 활용하고 싶다면 당신은 못생긴 개구리를 삼켜서 새로운 어휘를 배워야합니다. karlphillip의 멋진 예제를 참조하십시오.

초기 설정/데이터 파일 형식으로 사용하면 XML 문서 형식의 실질적인 이점은 무엇입니까?

XML은 XML 파일의 스키마를 정의 할 때 이점을 제공하므로 입력이 올바른지 확인할 수 있습니다. XML 스키마를 정의하고 예를 들어 다음과 같이 말할 수 있습니다. 압력은 언제나 형식 0을 가져야합니다. [0-9] 또는 그런 식으로. 컴퓨터에서 파싱 할 수있을 때 파일을 사람이 읽기 쉽도록 만듭니다.

XML로 전환 할 때 이점이 있습니까? 내가 어떻게 그럴 수 있니? 위의 텍스트 파일에는 일반적으로 50000 줄의 숫자 만 있습니다. XML 파일을 ASCII 텍스트 파일 형식으로 읽거나 출력 할 수있는 속도면에서 장점이 있습니까?

샘플이 자동으로 또는 수동으로 txt 파일에 입력 되었습니까? 후자의 경우, 새로운 데이터가 추가 될 때 (예 : 순서 변경 또는 잘못된 형식과 같은) 스크래치가 발생하지 않는 이점이 있습니다. 귀하의 XML처럼 볼 수 있었다 :

<sample id="1"> 
    <pressure>0.2</pressure> 
    <temperature>7.8</temperature> 
    <volume>4.5</volume> 
    <radius>6.7</radius> 
</sample> 
<sample id="2">....</sample> 

또는 내가 XML 솔루션 때문에 XML 처리 오버 헤드의 속도가 느린 것 speedwise 생각

<sample id="1" Pressure="0.2" Temperature="7.8" Volume="4.5" Radius="6.7"/> 

처럼 보일 수 있지만, 당신의 유용성에 얻을 것 형식.

포인트 3 : 저는 C++ 프로그래머가 아닙니다. 최소한 경험있는 사람이 아닙니다.이 링크는 어떻습니까? http://www.applied-mathematics.net/tools/xmlParser.html (작성자가 경험 한 것과 같은 고통을 경험했습니다. 유효성 검사가 아닌 파서)

당신은 오래된 데이터를 xml로 변환하기 위해 먼저 XML 파일을 구조화하려는 방법에 대해 생각하고 싶습니다. 그럼 난 옛날 형식으로 읽을 것이고 xml로 뱉어 낼 perl/python/ruby ​​/ favoritescriptlanguage를 사용할 것이다.

편집 : 프로 : 기본적으로 사용자가 쉽게 읽을 수 있고 컴퓨터에서 파싱 할 수있는 형식을 얻을 수 있습니다. XML 스키마 또는 DTD를 사용하여 형식에 대한 스키마를 정의 할 수 있으므로 형식을 검증 할 수 있습니다. xml 작업을위한 수많은 라이브러리와 응용 프로그램을 사용할 수 있습니다. 대부분의 개발자는 사용자 지정 형식과 비교하여 xml 파일의 구조를 이해하는 데 문제가 없을 것이라고 생각합니다. 그러나 형식은 비교적 간단합니다.

단점 : 새로운 어휘를 배워야합니다. 이전 데이터를 XML로 변환해야합니다. XML을 읽고 쓰는 데 필요한 몇 가지 라이브러리를 배워야 할 것이다. Speedwise를 사용하면 약간의 성능이 저하되지만 대부분의 성숙한 라이브러리는 충분히 빠르다고 생각합니다.

+0

+1 잘 설명했습니다! – karlphillip