2014-04-25 2 views
0

C++ 라이브러리를 사용하지 않고 C++로 xml 파일을 읽으려고합니다. 다른 게시물에서 코드를 가져 와서 이해하고 구현하려고했습니다. 지금까지 이걸 가지고 있습니다 ...C++에서 XML 파일 읽기

{ 
    string line; 
    ifstream in("Team.xml"); 

    bool startOfTag; 
    startOfTag = false; 

    while (getline(in,line)) 
    { 
     std::string temp; 
     for (int i = 0; i < line.length(); i++) 
     { 
      if (line[i] == ' ' && temp.size() == 0) 
      { 
      } 
      else 
      { 
       temp += line[i]; 
      } 
     } 

     cout << "-->" << temp << "<--" << endl; 

     if (temp == "<Fname>") 
     { 
      cout << "Found <Fname>" << endl; 
      startOfTag = true; 
      continue; 
     } 
     else if (temp == "</Fname>") 
     { 
      startOfTag = false; 
      cout << "Found </Fname>" << endl; 
     } 

     if (startOfTag) 
     { 
      cout << temp << endl; 
     } 
    } 
} 

그러면 내 XML 파일은 다음과 같습니다. 이 I 전체 XML 내용을 프로그램을 실행할 때 시간이 순간

<?xml version="1.0" ?> 

<Team> 
    <Player> 
     <Fname>David</Fname> 
     <Lname>James</Lname> 
    </Player> 
</Team> 

, 나는 단지 <Fname> 즉 다윗 내에서 값을 읽을하고자하지만입니다. 어떤 아이디어?

+1

당신이 라이브러리 중 하나는 당신이 자신을 처리 XML을 구현하지 않고 작업을 수행하는 데 더 많은 시간을 가질 것입니다 사용하는 방법을 배우는 시간을 할애합니다. –

답변

1

나는 XML 스펙에 의해 정의 된대로 구문과 문법에 따라 제안 :

XML Spec.

당신은 또한 디버거에서 또는 IDE 중단 점 및 단일 스테핑, 그것을 사용을 지원하는 경우 투자해야한다.

for 루프가 수행하려고하는 것을 이해하지 못합니다.
언어를 구문 분석하려면 올바르게 수행하십시오. "구문 분석 방법"또는 "어휘 분석"을 찾으십시오. std::string

다음과 같은 방법이 유용 할 수 있습니다

find 
substr 
find_first_not_of (good for skipping whitespace)