выбор элементов XML - PullRequest
       27

выбор элементов XML

1 голос
/ 23 февраля 2012

У меня есть 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();

почему это? У меня есть ощущение, что это может быть потому, что один элемент книги имеет атрибут по имени, а другой элемент книги имеет атрибут по идентификатору.

Это мой первый раз, когда я имею дело с xml и tinyxml, я прошу прощения, если я использовал неправильную терминологию, и если мне нужно больше объясниться, просто дайте мне знать.

Спасибо заранее.

Ответы [ 2 ]

3 голосов
/ 23 февраля 2012

Если дерево XML точно такое, как вы его показываете, это не сработает, поскольку вы все еще выбираете первый элемент book, у которого нет page дочернего элемента.

2 голосов
/ 23 февраля 2012

Потому что первый дочерний элемент книги не имеет элемента страницы.Второй ребенок делает

...