2012-02-23 4 views
1

나는이 XML 파일을 구문 분석 tinyxml을 사용하고이선택 XML 요소는

<library> 
    <book name="ABC"> 
     <chapter val="1"/> 
      ... 
    </book> 
      ... 
    <book id="123"> 
     <page val="567"/> 
      ... 
    </book> 
</library> 

과 같은 형태의 XML 파일이 있습니다. 나는 C++에서 이것을하고있다. 'chapter'요소를 선택하고 싶습니다. 내 코드는 ...

TiXmlDocument doc; 
TiXmlHandle XMLFileHandle(&doc); 

TiXmlElement* Book1Element = XMLFileHandle.FirstChild("library").FirstChild("book").FirstChild("chapter").FirstChild.ToElement(); 

작동합니다. 하지만 '페이지'요소를 선택하려고하면 같은 방식으로 작동하지 않습니다.

TiXmlElement* Book2Element = XMLFileHandle.FirstChild("library").FirstChild("book").FirstChild("page").FirstChild.ToElement(); 

왜 그런가요? 하나의 책 요소에는 이름으로 속성이 있고 다른 책 요소에는 ID로 된 속성이 있기 때문에 그럴 수 있다고 생각합니다.

xml과 tinyxml을 다루는 것은 처음입니다. 잘못된 용어를 사용하면 사과 드리며, 더 자세히 설명 할 필요가 있으면 알려주세요.

고맙습니다.

답변

3

book 요소를 여전히 선택하고 있기 때문에 XML 트리가 표시되는 것과 똑같습니다. page 자식이 없습니다.

+1

입니다. 기본적으로 FirstChild ("chapter")를 FirstChild ("page")로 변경해도 book 요소의 선택을 변경하지 않습니다. 어떻게해야합니까? – livelaughlove

+2

@livelaughlove'book'을 선택하면 그 속성에 따라 올바른'book' 요소를 찾아야합니다. API 문서를 살펴보면 도움이 될 것입니다. – pmr

+0

아, 고마워! – livelaughlove

2

book의 첫 번째 하위 요소에 페이지 요소가 없으므로. 두 번째 자식은