选择xml元素

时间:2012-02-23 18:44:42

标签: c++ attributes element nodes tinyxml

我有一个看起来像这样的

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

我使用tinyxml来解析这个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();

为什么?我有一种感觉,因为一个book元素按名称有一个属性,另一个book元素有一个id属性。

这是我第一次处理xml和tinyxml,如果我使用了错误的术语,我道歉,如果我需要进一步解释自己,请告诉我。

先谢谢。

2 个答案:

答案 0 :(得分:3)

如果XML树与您显示的完全相同,那么这不会起作用,因为您仍在选择第一个book元素,该元素没有page子元素。

答案 1 :(得分:2)

因为书的第一个孩子没有页面元素。第二个孩子