2012-02-23 17 views
1

私は、このXMLファイルを解析するtinyxmlを使用しています。この選択するXML要素

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

のようになりますxmlファイルを持っています。私はC++でこれをやっています。私は '章'要素を選択したいと私のコードはここ...

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(); 

なぜですか? 1つのブック要素が名前で属性を持ち、もう1つのブック要素がidで属性を持つため、私はそれがあるかもしれないと感じています。

xmlとtinyxmlを扱うのは初めてのことです。間違った用語を使用した場合は謝罪し、さらに自分自身を説明する必要がある場合は、私に知らせてください。

ありがとうございました。

答えて

3

book要素をまだ選択していて、pageという子を持たないXMLツリーが表示されている場合、これは正しく動作しません。

+1

なので、基本的にFirstChild( "chapter")をFirstChild( "page")に変更しても、ブック要素の選択を変更することはできません。どうすればいいですか? – livelaughlove

+2

@livelaughlove 'book'を選択すると、その属性で正しい' book'要素を見つける必要があります。 APIのドキュメントを見て、そこにいくつかのヘルプを見つける必要があります。 – pmr

+0

ああ、ありがとう! – livelaughlove

2

bookの最初のChildにはpage要素がないためです。 2番目の子は